关于位移运算符的一个疑问 >>和>>>的区别在于对最高位的处理.>>舍弃移出的低位,最高位则移入原来的高位值.>>>舍弃移除的低位,最高位补0.我就不理解“最高位则移入原来的高位值”这句话???原来的高位值是什么啊???能举个例子帮我理解吗?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 例: 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所以 -11111 1111 1111 1111 1111 1111 1111 1111Bi >>>= 10 后0000 0000 0011 1111 1111 1111 1111 1111B= 4194303(转) 比赛情况的程序题,大家帮我看下,在线等 解析JAVA中常见异常类型与原因 如何查找UTF-8字符串中的字符串?(字符编码问题) 问一个面试题,undo 和 redo 大家看看解决这个错误该如何分析,谢谢.... java 中中文输入问题 新手上路:如何将一个string转换成byte[]? 请问哪里有《Java 安全》PDF格式下载啊?或者关于JASS,GSS方面的资料下载啊? 请教一下java里如何能关闭windows阿? 它为什么老是这样???? 一个死锁的小程序,请大家看看为什么不行。 xor画法 高手大哥们帮帮忙阿
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(转)