本文介绍了java位操作>>>转移的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么如果
int x = -1 // binary: 11111111111111111111111111111111
x = x >>> 31;
我们有00000000000000000000000000000001
we have 00000000000000000000000000000001
但是如果
int x = -1
x = x >>> 32;
我们有11111111111111111111111111111111(再次-1)
we have 11111111111111111111111111111111 (again -1)
但不是00000000000000000000000000000000?
but not 00000000000000000000000000000000 ?
推荐答案
来自:
强调我的。所以:
x >>> n
相当于:
x >>> n & 0x1f // or x >>> n % 32
所以, x>>> 32
相当于 x>>> 32& 0x1f
< ==> x>>> 0
== x
。
So, x >>> 32
is equivalent to x >>> 32 & 0x1f
<==> x >>> 0
== x
.
所以经验法则是,每当你将数字移动 32
的倍数时( int
是 32位
),你得到相同的值。
So the Rule of Thumb is, whenever you shift a number by a multiple of 32
(int
is 32 bits
), you get back the same value.
这篇关于java位操作>>>转移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!