X >>> Y
是否有任何数学公式。我们有X >> y
和X << Y
的公式?
如果sombody说5 >>> 2
的值是多少,那么如何在不将它们转换为二进制的情况下计算该值。
答案 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
)来升级您的值。如果a
是long
,那么您需要了解一下BigInteger。 (我甚至都不打扰那个。)