【发布时间】:2014-03-29 18:45:19
【问题描述】:
在c中~是1的补码运算符。这相当于:~a = -b + 1 所以,a - ~b -1 = a-(-b + 1) + 1 = a + b – 1 + 1 = a + b
谁能给我解释一下?
【问题讨论】:
-
你有没有为自己做过一些简单的例子?也许尝试以这种方式“添加”几个 4 位数字,重复 3 或 4 次,然后向自己解释一下?
-
使用 a - -b 是另一种方式。
-
这只有在你理解two's complement numbers之后才有意义。
-
该推导所采取的步骤有点奇怪。
a - ~b -1 = a-(-b + 1) + 1是有效的(并且等于a + b),但它作为一个步骤并没有真正的意义。它看起来有点像是在替换~b = -b + 1(这是不正确的)并且通过将最后的减法更改为加法来意外修复它。很奇怪。
标签: c bitwise-operators integer-arithmetic