原码 反码 补码

原码 反码 补码

  • 对计算机中常见数据的分类
  • 机器数与真值
  • 原码
  • 反码
  • 补码

对计算机常见数据的分类

  • 数值类型
    • 整数
      • 正整数
      • 负整数
    • 浮点
  • 非数值类型

机器数

就是数值在计算机的二进制表现形式

机器数在计算机中有符号,使用最高位表示符号,使用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;

你可能感兴趣的:(原码 反码 补码)