int 类型是4bytes. -1 换用二进制是 1111 1111 1111 1111 1111 1111 1111 1111B。 向右移10位,左边加0,很容易得到答案的。

解决方案 »

  1.   

    如果是 int i=-2 换用二进制是 1111 1111 1111 1111 1111 1111 1111 1110
    是这样吗?
    基础不是很好,问的问题大家不要见怪
      

  2.   

    是的
    用二进制表示时最高位用0或1表示正负
    0表示正 1表示负(不是仅最高为1 而是所有的高位都是1)>>  是带符号右移  右移时左边补符号位
    >>> 是不带符号右移 右移时左边补零所以两者在处理 正数时是一样的 左边都补零
    但在处理负数时就有区别了 >>补1 >>>补0所以 -1
    1111 1111 1111 1111 1111 1111 1111 1111B
    i >>>= 10 后
    0000 0000 0011 1111 1111 1111 1111 1111B
    = 4194303