1、为什么任何数移动32位后还是原来的数(我知道处理器是32位的),比如 1 < <32 这不是应该将低位填充0嘛,为什么做出来时原来的数?2、 移位操作符中,只有数值右端的低5位才有用。 这里所谓的低5位指的是什么? 如果一个 int 数是5那么它的低5位就是0 0101 (这就是低5位)??
解决方案 »
- java IO代码问题:将两个txt文件内容分别去重并去除重复内容后写入到另外两个txt文件,下面代码根本写不进
- Java中的gui设计问题,想设计一个界面,左面显示一列按钮,右面是界面
- Exception in thread "main" java.lang.NullPointerException大神们这是什么问题
- FMJ
- 求教关于java打印的走纸问题
- 如何从文件中一次只读出一个字符???```
- 为什么是false?
- 数据类型转换,急!已知list存放的数据类型的名字,如何将list中的值转换成该类的类型?
- 一个奇怪的文件输出问题,还请高手指点!!!!
- 兄弟们! 为什么我运行《Thinking In Java》中的Socket例子的代码会报错啊!!! 高分!!
- Hibernate如何开二级缓存?
- 数组问题
楼主【llm0528】截止到2008-07-10 16:33:49的历史汇总数据(不包括此帖):
发帖的总数量:49 发帖的总分数:980 每贴平均分数:20
回帖的总数量:41 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:49 结贴的总分数:980
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
2.说的是同一个事 指右操作数(二进制)只有低五位有效 这样就能保证实际移位值保证小于等于31 如果是long 就是低6位至于为何要这样设计 我想是出于算法简便(只要截低五位)或者一些实际操作上的需要(0不太友好 同时也类同一些类型转换的规则)
移位操作符一个非常值得注意的特点是其右操作数是取模运算的,意思是说对于一个int型数据而言,对它移位32位的结果是保持不变而非变成零,即:a>>32的结果是a而不是0,同理,对long型数是对右操作数取64的模, a>>64==a;还有一点需要注意的是移位操作符”>>>”只对int型和long型有效,对byte或者short的操作将导致自动类型转换,而且是带符号的。另外记住:
a.无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5 < <32=-5、-5> > 32=-5、-5> > > 32=-5。-------------TerryLhw1983
b.
在 JVM 中,> > 操作,后面的数是 int 类型的。如果前一个操作数是 int 类型的话,取右移位数的低 5 位,相当于右移位数与 0x1f 做了 & 运算;
如果前一个操作数是 long 类型的话,取右移位数的低 6 位,相当于右移位数与 0x3f 做了 & 运算。正如楼主的例子,> > 32,32(100000),可以看到它的低 5 位全是“0”,与 > > 0 的结果一致。---------------火龙果 -------------------------
java的移位操作符一共有三种,分别是”>>”,”> >>”,”<<”,执行的操作分别是有符号右移,无符号右移,左移,有符号右移的意思是说移入的最高位和原最高符号位相同,无符号右移是移入位始终补零,左移时最低位始终补零,最高位被舍弃。