第1个回答 2012-07-25
这个问题蛮有意思的,我的想法是这样的:
假设一串n位的
二进制数记为“A”,A=a[n-1]*2(n-1)+a[n-2]*2(n-2)+....+a[1]+a[0]。设从a[0]开始,第一个为1的为a[i],(0<=i<=n-1)。然后分别进行“取反加一”和“减一取反”的计算,取反时,每一位可表示为(1-a[j])的形式,最后算出来的结果是一样的。
本回答被网友采纳
第2个回答 2020-04-11
对于一个N位的二进制数a(按整数字节来说,N是8的倍数),对这个数取反得到二进制数b,由于求补码时符号位不参与运算,直接去掉,则一定有a+b = 2^(N-1)-1(十进制),设为X,即全1的N-1位二进制数。所以有a+b=X。
因此:a先取反后加一的结果为:b+1 = X-a+1;而先减一后取反的结果为:X-(a-1) = X-a+1
显然两者结果相同。
另外你说的四位数加上1111,如果每一位都不考虑进位的话就相当于按位取反,即0+1=1 , 1+1=0,这个用于理解反码,不用于计算;如果每一位都考虑进位的话就是正常计算两个二进制数相加,是计算结果。
第3个回答 2019-09-20
N个字节,总和为2^N-1,一个大小为n的数,取反等于总和减去本身。这里是取反操作最为直观得现象,因为取反前后相加每位都是1。你得取反有一定道理但是太扭了。
现在:(1)n减一得:n-1,再取反得:2^N-1-(n-1)=2^N-n。(2)n取反得:2^N-1-n,再加一得:2^N-n。以上证毕。
第4个回答 2022-03-30
关于“先减1再取反等于先取反再加1”的数学证明。
可以这么理解为:
已知一整数 X ,-X = ~X+1,X∈N,~X是X的取反。
求证:-X = ~(X-1) 。
证明:
∵-X = ~X+1 ,X∈N
∴ X = -(~X)-1
∴~X = -X-1
令X=X-1,则上式化为:
~(X-1) = -(X-1)-1
~(X-1) = -X+1-1
即:-X = ~(X-1)
∴ ~X+1= ~(X-1)= -X