在 c 中 ~ 是 1 的补码运算符。这相当于: ~a = -b + 1 所以,a - ~b -1 = a-(-b + 1) + 1 = a + b – 1 + 1 = a + b
谁能给我解释一下?
在 c 中 ~ 是 1 的补码运算符。这相当于: ~a = -b + 1 所以,a - ~b -1 = a-(-b + 1) + 1 = a + b – 1 + 1 = a + b
谁能给我解释一下?
从小学数学我们知道
a = -(-a);
从二进制补码我们知道
-a = (~a) + 1 (invert and add one)
所以我们知道
a + b
= a - (-b) elementary math
= a - (~b + 1) twos complement
= a - (~b) - 1 distribute the negative (elementary math)
你是对的,~
在c中总是1的补码(也就是按位不是)。你出错的地方是:C 不保证数字的 2 补码。所以你所有的计算都依赖于使用 C 的主要风格。