专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > J2ME

java中的移位操作

发布时间:2010-06-05 12:39:56 文章来源:www.iduyao.cn 采编人员:星星草
java中的位移操作
public class Displacement
{
public static void main(String args[])
{
System.out.println(-15>>2);
System.out.println(-15>>>2);
System.out.println(-15<<2);
System.out.println(15>>2);
System.out.println(15<<2);


System.out.println("************");
System.out.println(-14>>2);
System.out.println(-14>>>2);
System.out.println(-14<<2);
System.out.println(14>>2);
System.out.println(14<<2);


}
}
结果如下:
-4 (注意:-15与-14向右移两位的结果都为-4,为什么?)
1073741820 (注意-15>>>2与-14>>>2的结果一样,为什么?) 
-60
3
60
************
-4
1073741820
-56
3
56
Press any key to continue...
请问:负数的向右位移是如何移动的?为什么负数的向左移结果正常,向右移运算结果就不在意料之中呢?

------解决方案--------------------
你再尝试下 >> 34, >>> 36
------解决方案--------------------
可能是高位进位产生的吧
------解决方案--------------------
楼主把数都用2进制表示,再去看移位,你就明白了。
注意:负数要表示成2的补码形式。
<<和>>表示算术移位,<<<和>>>表示逻辑移位。
算术移位是保持符号位的,逻辑移位在不对符号位做特殊处理。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: