锁定老帖子 主题:java移位运算符详解
精华帖 (0) :: 良好帖 (16) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-11-11
77tt77 写道 右移一位相当于除2,右移n位相当于除以2的n次方?
11>>2 结果11/4是2? 2,结果是转换为int |
|
返回顶楼 | |
发表时间:2010-11-19
右移跟左移的区别很大,左移可以一直移,右移你要保证数值能整除.而且不等于0.
|
|
返回顶楼 | |
发表时间:2011-07-25
最后修改:2011-07-26
提个疑问,关于long型数据做位运算移位左移64位操作时候的结果.
int a = 64; long b = 1L; System.out.println(b << a); 打印结果是 1 可以看出关于long型操作移位时左移出高位采取的是舍去后面的64位数据位,只保留舍去后剩余的数据位,以此类推. (补充纠正下,因为前面也是猜测觉得是这个意思,后面查了资料才知道,java中为了保证移位不会超出预定数据类型的位长度,采取的是对移位取模的方式进行操作,int类型是取模32,long是取模64..short,byte是按照int操作计算,所以上面的操作就可以得到解释了,结果是1,数据类型是long型) |
|
返回顶楼 | |
发表时间:2011-07-25
foohsinglong 写道 右移跟左移的区别很大,左移可以一直移,右移你要保证数值能整除.而且不等于0.
您懂位运算么? |
|
返回顶楼 | |
发表时间:2011-07-25
其实也不用太纠结这些东西,大致了解它的语义就可以了,例如,1 << -1 值是多少?又代表什么意思呢?
|
|
返回顶楼 | |
发表时间:2011-07-26
fp1203 写道 其实也不用太纠结这些东西,大致了解它的语义就可以了,例如,1 << -1 值是多少?又代表什么意思呢?
开始我也是这么想的..但是当你深入的去研究这些东西的时候会发现研究这些东西是有用的..起码可以扩展很多其他类型的知识,当然位运算现在很多程序员已经不怎么使用了..但是对于老的一些程序员算是个基础课程吧.. |
|
返回顶楼 | |
发表时间:2011-08-18
ypyf3000 写道 77tt77 写道 右移一位相当于除2,右移n位相当于除以2的n次方?
11>>2 结果11/4是2? 他应该强调一下,这些运算的结果都是针对整数的、 地板擦的除法? |
|
返回顶楼 | |