计算机组成原理-机器码


原码

  • “00...0” 和 “10...0” 均表示 0

  • 最左表示“符号位” ? 0 表示正数,1 表示负数

  • 加法运算

  1. “符号位”相同则“数值位”直接相加,符号位不变
  2. “符号位”不同则“数值”大的减数值小的,“符号位”与数值大的相同
  • 减法运算
    把“减数”符号取反,剩下的与加法相同

反码

  • “00...0” 和 “11...1” 均表示 0
  • 正数 ? 反码等于原码
  • 负数 ? 除符号位外其他部分“取反
  • 加法运算 ? 直接相加,最高位向最低位进位(循环进位)

补码

  • “00...0” 为 0 的补码
  • 正数:补码等于原码
  • 负数
    • ? 反码法 ? 符号位不变,按位取反,最后加 1

      • ?? 定点小数同理
    • ? 扫描法 ? 符号位不变,右起第一个 1 及其右边的 0 不变,其余取反
  • 加法运算
    • 基于计算机会将超过模数的部分去掉,如模为12(1100)时,13(1101)变成1(0001)

      [x]补 + [y]补 = [x+y]补
  • 溢出

    模 12 时 9-8=9-(12-8)=9+4=13=1,此时利用了溢出截断来实现减法,但是 9+4=13=1 不符合实际,就是溢出了,并且是“上溢”