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



X >>> Y有什么数学公式吗?我们有X >> yX << Y的公式? 如果 sombody 说5 >>> 2的值是多少,你将如何计算值而不将它们转换为二进制。

>>>逻辑无符号的右移。

>>不同,是一个算术右移(并尊重符号),>>>更多地将左操作数视为无符号值或位序列,而不是正常数字。 重要的是逻辑转换的,而不是它们在 Java 中表示的有符号值。 所以一个纯粹的数学公式有点毫无意义,IMO。

但是,如果你坚持这样做,任何inta的位 - 甚至是负数 - 都与a+232的低32位相同。 所以对于a >>> b,你可以找到它作为((a+232)mod 232)/2b

您将遇到的大问题是 232(以及它和任何非负整数的总和)不适合int。 您需要在某些位置使用long(或double)来增大值。 如果a是一个long,那么你需要学习一些关于BigInteger的知识。 (我什至不会费心去报道这一点。

最新更新