按位运算符的负操作数如何在 Java 中工作?
How do negative operands to bitwise operators work in Java?
-4 & -5 = -8 // How?
-4 & 5 = 4 // How?
我需要解释如何达到上述结果。我用正整数求解没有困难。
只需将整数转换为二进制表示(对于负整数,使用 two's complement)和 运行 按位与:
-4 11111..1100 &
-5 11111..1011
-8 11111..1000
-4 11111..1100 &
5 00000..0101
4 00000..0100
让我们看看数字是如何表示的:
positive four 0100
negative four 1100
positive five 0101
negative five 1011
negative eight 1000
如果你尝试做and
操作手册,你会得到这样的结果:
1100 (-4) & 1011 (-5) = 1000 (-8)
1100 (-4) & 0101 (5) = 0100 (4)
Here 您可以阅读更多相关信息。
-4 & -5 = -8 // How?
-4 & 5 = 4 // How?
我需要解释如何达到上述结果。我用正整数求解没有困难。
只需将整数转换为二进制表示(对于负整数,使用 two's complement)和 运行 按位与:
-4 11111..1100 &
-5 11111..1011
-8 11111..1000
-4 11111..1100 &
5 00000..0101
4 00000..0100
让我们看看数字是如何表示的:
positive four 0100
negative four 1100
positive five 0101
negative five 1011
negative eight 1000
如果你尝试做and
操作手册,你会得到这样的结果:
1100 (-4) & 1011 (-5) = 1000 (-8)
1100 (-4) & 0101 (5) = 0100 (4)
Here 您可以阅读更多相关信息。