各位大神
麻烦给我科普几个运算符
比如
2<<3 = 16这是怎么计算的?这是什么运算符
或者3>>>2 = 0 是怎么计算的?
 ~2<<3 = -24,这又是怎么计算的?

解决方案 »

  1.   

    http://hi.baidu.com/freish/blog/item/7dc95c0f53028d206159f3ef.html
      

  2.   

    但愿你的os是windows 7的,xp好像只有左位移。
    打开计算器,菜单选项选择“科学型”或者“程序员”,
    在十进制下输入2,然后切换到二进制下。此时显示的是二进制10.
    然后Lsh,代表Left Shift即,左位移 << 输入 1,代表向左位移1次,结果为二进制100(十进制4)。
    再Lsh,输入1,=,(或者直接=)得到1000(8),再次得到10000(16)>> 以及 >>> 方向刚好相反,只是>>保留最高位的符号位不动,>>>连符号位一起移动。~代表把二进制所有的位置,0和1互换
      

  3.   


    << 左移运算符,将所有位左移一位,右边补0,相当于乘以2
    >> 右移运算符,将所有位右移一位,左边补1(有符号数),相当于除以2
    >>>右移运算符,将所有位右移一位,左边补0(无符号数),也是相当于除以2~按位取反
      

  4.   

    >>为带符号的向右移位运算符,a>>b的结果为a/(2^b);
    <<为带符号的向左移位运算符,a<<b的结果为a*(2^b);
    >>>为不带符号的向右移位运算符,一般很少用;
    总结为一句话为:某数向右移几位,结果就为该数整除2的几次方;
                    某数向左移几位,结果就为该数乘以2的几次方; 
      

  5.   

    这是java的位运算符
    <<和>> 运算符是将二进制位进行左移或者右移的操作
    >>>运算符是将用0填充高位,>>运算符是用符号填充高位  没有<<<运算符
    2<<3 = 16  2的二进制是100左移三位100000=2^4=16
    或者3>>>2 = 0 二进制是011右移2位根据上面的概念可知为0
     ~2<<3 = -24 先按位取反 在进行左移就可以得到了