众所周知,内存中的负数通常表示为二进制补码
from x to ~x + 1
Run Code Online (Sandbox Code Playgroud)
为了回来,我们不会做明显的事情,比如
~([~x + 1] - 1)
Run Code Online (Sandbox Code Playgroud)
但我们这样做
~[~x + 1] + 1
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么它总是有效吗?我想我可以用 1 位、2 位、3 位数字来证明它,然后使用数学归纳法,但这并不能帮助我理解它究竟是如何工作的。
谢谢!