计算机中的原码、反码、补码

计算机常见数据的分类

  • 数值类型
  • 非数值类型

机器数和机器数的真值

  • 在机器数中,使用最高位来表示数字的正负;1为负,0为正;一个字长为8位
  • 机器数的真值就是机器数所对应的真正的数值,例:1000 1101=-13,0000 1101=13

为什么需要反码和补码

  • 反码:在设计计算机的时候只设计了加法器,没有减法器,使用加法计算来表示减法
  • 补码:反码解决了没有减法器的的问题,但是会出现正负相加 0 表示不唯一,使用补码进行修正

原码

  • 符号位,首先确定一个数的正负,如果是正数,首位使用0表示;如果是负数,首位使用1表示
  • 有效位,真值的绝对值转换为二进制形式
  • 将符号位和有效位拼接在一起

反码

  • 正数:正数的反码和原码相同,例: +3 0000 0011【原码】=0000 0011【反码】
  • 负数:符号位不变,其余各位直接取余,二进制只有两种状态,1-->0,0-->1

补码

  • 正数:正数的原码、反码和补码全部相同,例: +3 0000 0011【原码】=0000 0011【反码】=0000 0011【补码】
  • 负数:求得原码,再求反码,然后在最后一位+1

补码转原码

  • 正数:补码=反码=原码
  • 负数:补码的补码;首位不变,其余取反,再+1

反码转原码

  • 正数:不变
  • 负数:符号位不变,其余各位取反

你可能感兴趣的:(计算机中的原码、反码、补码)