本文介绍了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位操作&gt;&gt;&gt;转移的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-17 20:45
查看更多