原码、反码、补码

维基教科书,自由的教学读本

原码、反码、补码,是表示带符号二进制数的最常用的方法。

原码[编辑]

所谓原码,就是一个符号位加原数绝对值。表面上,原码已经可以表示出一些数字了,但是在实际的计算机中会引发一些问题。例如,0和-0的八位二进制原码分别是00000000和10000000,但事实上它们俩是同一个数。所以,这就需要引进反码和补码的概念。

反码[编辑]

所谓反码,就是除了符号位,其他每一位都是原码对应位异或1的值。换句话说,原码这一位是0,反码就是1,反之亦然。

与原码同样,反码不能将0和-0看作同一个数。

补码[编辑]

那么,既然原码和反码都不能很好的将0和-0化为同一个数,这时候,补码就派上用场了。

当数字的符号位为0(也就意味着≥0)时,补码与原码相同。而当数字的符号位为1(意味着≤1)时,则是反码+1。

因此,0的八位二进制补码为00000000,-0的八位二进制补码为11111111+1=100000000。你看,这样0和-0就能统一了。八位补码10000000则代表-128。