标签: c twos-complement
在Obfuscated C Code Contest 2006. Please explain sykes2.c,
因为两个补码而有一个声明“-~i == i+1。”
-~i == i+1
有人可以解释为什么会这样吗?
答案 0 :(得分:4)
-~x等于x+1,因为~x等同于(0xffffffff-x)。这相当于2s补码中的(-1-x),因此-~x为-(-1-x) = x+1。
-~x
x+1
~x
(0xffffffff-x)
(-1-x)
-(-1-x) = x+1