【问题标题】:Mathematical formula for unsigned right shift in java [duplicate]java中无符号右移的数学公式[重复]
【发布时间】:2014-01-16 14:08:22
【问题描述】:

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

【问题讨论】:

标签: java


【解决方案1】:

>>>逻辑无符号右移。

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

不过,如果你坚持,任何 int a 的位——甚至是负数——都与a+232 的低 32 位相同。所以对于a >>> b,你可以找到它为 ((a+232) mod 232) / 2b

您将遇到的大问题是 232(以及扩展,它和任何非负整数的总和)不适合 int。您需要在某些地方使用long(或double)来提升您的值。如果along,那么您需要了解一下BigInteger。 (我什至不想费心去报道。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多