前面我们知道了人们利用电子电路知识实现了加法,那么要实现减法是不是也要重新设计一套电路器件呢?在计算机二进制里实现减法实际上是通过加法来实现的,例如计算a+b就是计算a+(b的补数),这样利用加法就实现了减法,有点类似十进制的a-b=a+(-b),即相当于减一个数就等于加他的相反数,其实二进制减法也是加上相反数,只不过这里用二进制的补数来表示一个负数。
十进制里表示一个负数,我们只需要简单的在这个数前面加一个负号即可,但是二进制里你怎么加个负号啊,又怎么表示一个负数呢?所以这里要转换一下,我们知道一个数加一个他的相反数会等于零,例如 1+(-1)=0, 1的二进制是0000001,也就一个数加 00000001 后等于 0,那这个数就是1的二进制相反数,也叫补数。
00000001
+ ???????? = 这个数是 1111111 那么这个数就是0000001的相反数,也就是他的补数,这样用这样一个数就能表示一个负数了哦。
= 00000000
那么这个补数有什么转换规律?我们怎么能求出一个二进制数的补数呢?只要把要转换的数每一位取反,即0就换成1,1就换成0,这个在电路里也很容易实现,通电的就断开,断开的就通电, 0000001 取反 -> 1111110 , 取反后再加1 -> 1111111 ,这样就求出一个数的补数了,是不是很简单。根据这个规则求得的补数和原来的数相加都会变成0,这个10进制里的相反数一样。
原文:http://www.cnblogs.com/luckylihuizhou/p/6351351.html