只是怀疑二进制的补码是如何工作的。例如(在 python 中):
a = 60
print(~a)
给出输出:-
-61
60
的二进制补码不是:
a = 0011 1100
~a = 1100 0011
不应该是 -60
吗?
我知道我错了,但为什么它会提前到 -61
?
原文由 Rahul Mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议
只是怀疑二进制的补码是如何工作的。例如(在 python 中):
a = 60
print(~a)
给出输出:-
-61
60
的二进制补码不是:
a = 0011 1100
~a = 1100 0011
不应该是 -60
吗?
我知道我错了,但为什么它会提前到 -61
?
原文由 Rahul Mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.5k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
~
是按位反转运算符, 它完全按照定义运行:这就是整数 的二进制补码表示 的按位反转的工作原理。
这两个补码轮很好地形象化了这一点:
如您所见,1 的按位取反为 -2,2 的按位取反为 -3,…,60 的按位取反为 -61。