gpt4 book ai didi

java - 负逻辑移位

转载 作者:行者123 更新时间:2023-12-02 05:08:37 24 4
gpt4 key购买 nike

在 Java 中,为什么 -32 >>> -1 = 1 ?
它不仅仅特定于-32。它适用于所有负数,只要它们不太大。
我发现
x >>> -1 = 1
x >>> -2 = 3
x >>> -3 = 7
x >>> -4 = 15
给定 0 > x > 某个大负数

>>> -1 不等于 << 1 吗?但是 -32 << 1 = -64。
我已经阅读了二进制补码,但仍然不明白其推理。

最佳答案

这是因为当您移位 32 位 int 时,它只占用移位距离的最后 5 位。 (即 mod 32),所以 -1 mod 32 = 31,所以你右移了 31 位。当你移动一个负数(其开始位都是 1)时,你最终会得到一个 1。同样,右移 -2 就是右移 30 位,等等。如果你移动一个 long,需要 6 位的移位距离。请参阅此处了解轮类运算符如何工作的规范: http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.19

关于java - 负逻辑移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com