二进制补码为什么是原码取反加一
一.二进制和原码的定义
二进制
在二进制数中,每一位仅有0和1两个可能的数码。所以计数基数为2。低位和相邻高位间的进位关系是“逢二进一”。
原码
为了表示数的正,负在二进制数的前面增加一位符号位。符号位为0表示这个数为正数,符号位为1表示这个数为负数。这种形式的数称为原码。
二.反码和补码的形式
反码
正数反码是其本身,负数反码是将其原码除符号位,其余各位取反(0变1,1变0)。
补码
正数补码是其本身,负数补码是在其反码最后一位加1。
三.补码为什么是原码取反加一
补码的出现
当我们使用二进制原码进行相反数的加法运算如:1+(-1)时
得到的结果为-2。显然这个结果是错误的。为了解决这个问题出现了补码。
补码的原理
我们知道当一个二进制数的位宽确定后那么它所能表示的数也就具有了范围。基于这个原理为了实现相反数相加结果为0,我们可以使相反数相加的结果溢出从而成为0。
如上图,假设还是1+(-1)= 0,二进制数位宽为4位。通过计算可以得出-1应表示为1111。我们将1111称为4位二进制数-1的补码。
其中10000等于24。通过分析可以得出负数n的补码为2n-|n|。
反码的确定
一个数与其取反相加即可得到该数对应位宽的最大二进制数。
观察发现一个负数的反码就等于它的原码除符号位,其余各位取反+1。
同时为了在补码的计算过程中不出现加法计算所以将一个负数的原码除符号位,其余各位取反得到的数称为它的反码。
四.总结
当我们初次读到“二进制补码等于原码取反加一。”这句话时我们会下意识的产生一种反码产生于补码前的错觉。但是事实上在数制的发展思路中补码应该先于反码出现,甚至于我们可以理解为,为了补码在计算机中的计算方便所以产生了反码。
强调:
1.理解思路应该是补码先于反码。
2.反码加一产生补码只是一种数字组合中的巧合,其本身并不重要,关键要理解补码的原理。
3.反码变补码的+1是指在最后一位加一,不是加到个位。