2014-03-29 52 views
0

在c是1的补码运算符。这相当于:〜A = -b + 1所以,一 - 一B -1 =α - ( - B + 1)+ 1 = A + B - 1 + 1 = A + B在不使用加法运算符的情况下添加两个数字

任何人都可以向我解释这个吗?

+0

你是否为自己完成了一些简单的例子?也许尝试用这种方法“添加”几个4位数字,做3到4次,向自己解释一下吧? –

+1

使用--b是另一种方法。 – Bathsheba

+0

这只有在你理解[二进制补码](http://en.wikipedia.org/wiki/Two's_complement)后才有意义。 – user3386109

回答

4

从小学数学,我们知道

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) 
0

你是正确的,~始终为1的补(aka按位不)在c。你错误的地方在于:C不能保证数字的二进制补码。因此,所有的计算都依赖于使用C的主要风味。

相关问题