java中无符号右移的数学公式

时间:2014-01-16 14:08:22

标签: java

X >>> Y是否有任何数学公式。我们有X >> yX << Y的公式? 如果sombody说5 >>> 2的值是多少,那么如何在不将它们转换为二进制的情况下计算该值。

1 个答案:

答案 0 :(得分:0)

>>>逻辑无符号右移。

>>不同,它是算术右移(并且尊重符号),>>>将左操作数更多地视为无符号值 - 或位序列 - 比正常数字。它是与逻辑移位有关,而不是它们在Java中表示的有符号值。因此,纯粹的数学公式在某种程度上毫无意义,IMO。

如果坚持这一点,那么任何int a的位 - 甚至是负数 - 都与a + 2 32的低32位相同。所以对于a >>> b,你可以发现它((a + 2 32 )mod 2 32 )/ 2 b 。< / p>

你将遇到的一个大问题是2 32 (并且通过扩展,它的总和和任何非负整数)将不适合int。您需要在地方使用long(或double)来升级您的值。如果along,那么您需要了解一下BigInteger。 (我甚至都不打扰那个。)