>>和>>>的区别在于对最高位的处理.>>舍弃移出的低位,最高位则移入原来的高位值.>>>舍弃移除的低位,最高位补0.
我就不理解“最高位则移入原来的高位值”这句话???原来的高位值是什么啊???能举个例子帮我理解吗??

解决方案 »

  1.   

    例:
        public class URShift{
             public static void main(String[] args){
                 int i=-1;
                 i>>>=10;
                 System.out.println(i); 
            }
        }java: 4194303怎样工作:
    用二进制表示时最高位用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(转)