原码 反码 补码
- 对计算机中常见数据的分类
- 机器数与真值
- 原码
- 反码
- 补码
对计算机常见数据的分类
- 数值类型
- 整数
- 正整数
- 负整数
- 浮点
- 整数
- 非数值类型
机器数
就是数值在计算机的二进制表现形式
机器数在计算机中有符号,使用最高位表示符号,使用0表示正,使用1表示负一个字节8个bit位表示
+5=0000 0101
-10=1000 1010
真值
机器数所表示的真正的数值
如:1000 1010=-10
原码
原码就是符号位加上真值的绝对值
反码
正数:正数的反码=原码 如:+3=0000 0011(原码)=0000 0011(反码)
负数:符号不变,其余各位直接取反,1->0.0->1
-33 1010 0001 反码 1101 1110
-37 1010 0101 反码 1101 1010
-49 1011 0001 反码 1100 1110
补码
计算机中数据以补码的形式存储,同样以补码的形式参与计算
正数:原码=反码=补码 如:+3 0000 0011(原码)=0000 0001(反码)=0000 0001(补码)
负数:
-34 原码 1010 0010 反码 1101 1101 补码 1101 1110
-29 原码 1001 1101 反码 1110 0010 补码 1110 0011
-47 原码 1010 1111 反码 1101 0000 补码 1101 0001
为什么需要反码和补码
- 反码
- 计算机的运算器只有加法器,没有减法器,为了将减法转换为加法进行计算,设计反码;
- 但是反码有缺陷,正负相加0的表示不唯一
- 补码
- 为了解决反码正负相加不唯一的情况,使用高位溢出解决;
将补码转换为原码
正数:不需要转
负数:求 补码的补码
将负数的补码求原码,然后求该原码的补码
计算规则:符号位不变,其余各位直接取反,然后加1;