7.设 a = 8,则表达式  a >>> 2 的值是(      )。 
        A、1          B、2          C、3          D、4 
a>>>2到底什么意思?没看懂这个关系运算副

解决方案 »

  1.   

    这不是关系运算符。这是移位运算符。移位运算符一共有3个 :
    << 左移 符号位保持不变
    >>右移
    >>>无符号右移
      

  2.   

    >>>不是关系运算符ls正解
      

  3.   

    “>>>无符号右移”,对于正数来说>>>和>>是没有区别的“有符号”右移位运算符(>>)将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。而“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。整数8二进制表示为:0000 0000 0000 1000, 右移两位(高位补0)为0000 0000 0000 0010,所以结果为十进制的2
      

  4.   

    这个是不是可以理解成如果a=-8的话,a>>>2结果也等于2?
      

  5.   

    移位运算符 <<左移 如  <<2 左移两位 
                 >>右移 如 >>2 向右移两位 最高位参照移动前的最高位
                >>>无符号右移  >>>3 向右移3位   不论原来最高位是多少,都补0
      针对变量的移位操作不会对变量有影响 如 x<<1
      移位操作要注意 移的位数和被移的变量类型的字节数
    ---------------------------------
    我以前做的笔记
      

  6.   

    我曾经看见过公式是这样的,是关于左移和右移的公式
    左移:
    比如a=8,a<<3,它就是相当于a*2^n,所以现在的应该答案是64
    右移:
    比如a=8,a>>3,它就是相当于a/2^n,所以现在的应该答案是1
    lz的问题的答案是7楼所说的那样,等于十进制的2
      

  7.   

    >>>无符号右移位运算符,也是在高位补0 
    >>右移位运算符 ,在高位补符号0或者1结果为2
      

  8.   

    8 写成二进制 是1000  >>>2表示无符号右移动两位,就是去掉后面两个00 ,左边一定补零,变成0010 表示成十进制就是2>>也表示右移,但是这种右移时,先把后面的移走的位去掉,左边补上原来的位,左边原来是0就补0,是1就补1.
      

  9.   

    对 >>补充一下,8>>2  即1000右移两位 后左边补10 为1010
      

  10.   

    >>>无符号右移
    8的二进制表示为00001000,
    8 >>> 2 相当于将1右移2位,即00000010,也就是10进制的2
    所以答案为2.