原码(true form)
原码 (true form)是一种计算机中对数字的二进制定点表示方法
最高位为符号位,0为正数,1为负数
非符号位是该数字的绝对值的二进制
原码0000 0001 (1)D
原码1000 0001 (-1)D
反码
8位(1字节)二进制原码转反码
正数的反码与原码一致
正数
原码0000 0001 (1)D
反码0000 0001 (1)D
负数转反码,将数字位按位取反(原来为0变为1,原来为1变为0),符号位不变
负数
原码1000 0001 (-1)D
反码1111 1110 (-1)D
补码
8位(1字节)二进制原码转补码
正数的补码与原码一致
正数
原码0000 0001 (1)D
补码0000 0001 (1)D
负数转补码,将数字位按位取反后再加1,即将其反码加1
负数
原码1000 0001 (-1)D
补码1111 1111 (-1)D
小知识1
给出一个8位二进制数字1001 1100
原码1001 1100
补码1110 0100
快速将负数原码转化为补码的方法
从右向左转换,第一个1之前的0都不变,还写为0,第一个1也不变,还写为1,第一个1后面的1和0都变为相反的数,即0变1,1变0,最后一位(最高位/符号位)不变
快速将负数补码转换为原码的方法
从左向右转换,第一位(最高位/符号位)不变,最后一个1之前的1和0都变为相反的数,即0变1,1变0,最后一个1不变,还写为1,最后一个1之后的0也不变,还写为0
小知识2
一、原码,反码,补码只是二进制的三种表现方式
正数和负数都有原码,反码,补码
二、计算机里都是以补码的形式存储数据
三、负数反码转换成成原码的方法:符号位不变,其余位取反
四、0000 0101为八位二进制数字,他的最低位为第零位,最高位为第七位,一共八位,
占用8bit即1字节的内存
五、补码的形式便于运算
cpu只有加法器,没有减法器,所以计算机计算减法时,是把减法转化为加法。
例如要计算5 - 5,要转化为5 + (-5)来计算
1)用源码计算:0000 0101 + 1000 0101 = 10001010 = -10(D) (结果不对)
2)用反码计算:0000 0101 + 1111 1010 = 1111 1111
1111 1111为反码,转换成原码为1000 0000
1000 0000 = -0
这样0就有了两种表达方式:1000 0000 (-0)D 和 0000 0000 (+0)D
这样减少了可表示数字的数量
3)用补码计算:0000 0101 + 1111 1011 = 1 0000 0000(超出第七位。高位溢出,即第八位舍去),得出结果为0,正确。
而且补码形式0只有一种表达方式,相比反码增加了可表示数字的数量