0
在c是1的补码运算符。这相当于:〜A = -b + 1所以,一 - 一B -1 =α - ( - B + 1)+ 1 = A + B - 1 + 1 = A + B在不使用加法运算符的情况下添加两个数字
任何人都可以向我解释这个吗?
在c是1的补码运算符。这相当于:〜A = -b + 1所以,一 - 一B -1 =α - ( - 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)
你是正确的,~
始终为1的补(aka按位不)在c。你错误的地方在于:C不能保证数字的二进制补码。因此,所有的计算都依赖于使用C的主要风味。
你是否为自己完成了一些简单的例子?也许尝试用这种方法“添加”几个4位数字,做3到4次,向自己解释一下吧? –
使用--b是另一种方法。 – Bathsheba
这只有在你理解[二进制补码](http://en.wikipedia.org/wiki/Two's_complement)后才有意义。 – user3386109