原码、补码的乘除法总结

CPU里的寄存器位数都是统一的

0、运算器的基本组成

包括如下几个寄存器:

  1. ACC:累加器,用于存放操作数,或运算结果
  2. MQ:乘商寄存器,在乘、除运算时,用于存放操作数或运算结果
  3. X:通用的操作数寄存器,用于存放操作数
  4. ALU:算术逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算
    原码、补码的乘除法总结_第1张图片

一、原码一位乘法

设机器字长为n+1=5位(含1位符号位,n=4)。x=-0.1101,y=+0.1011
原码、补码的乘除法总结_第2张图片
原码、补码的乘除法总结_第3张图片

  1. 符号位:不参与运算,通过异或单独确定
  2. 数值位:通过被乘数和乘数绝对值的n轮加法、移位完成
    • 根据当前乘数中参与运算的位确定(ACC)加什么
      • 若当前运算位为1,则 ( A C C ) + [ ∣ x ∣ ] 原 (ACC)+[|x|]_原 (ACC)+[x]
      • 若当前运算位为0,则 ( A C C ) + 0 (ACC)+0 (ACC)+0
    • 每轮加法后,ACC、MQ的内容统一逻辑右移

二、补码一位乘法

设机器字长为n+1=5位(含1位符号位,n=4)。x=-0.1101,y=+0.1011。则 [ x ] 补 = 1.0011 , [ − x ] 补 = 0.1101 , [ y ] 补 = 0.1011 [x]_补=1.0011,[-x]_补=0.1101,[y]_补=0.1011 [x]=1.0011[x]=0.1101[y]=0.1011
原码、补码的乘除法总结_第4张图片

原码、补码的乘除法总结_第5张图片

  1. 寄存器中数的存放:被乘数采用双符号位补码,乘数采用单符号位补码(因为MQ的最后一位会用来存放“辅助位”)
  2. 辅助电路:被乘数所在的寄存器会连着一个辅助电路,用来将其中存放的x的补码转换成-x的补码,然后将其送往ALU
  3. 符号位:参与运算,详见下数值位
  4. 数值位:通过被乘数和乘数进行n轮加法、移位和多加一次加法,来完成的
    • 根据当前辅助位- MQ“最低位”的值确定(ACC)加什么
      • 辅助位- MQ“最低位”=1时: ( A C C ) + [ x ] 补 (ACC)+[x]_补 (ACC)+[x]
      • 辅助位- MQ“最低位”=0时: ( A C C ) + 0 (ACC)+0 (ACC)+0
      • 辅助位- MQ“最低位”=-1时: ( A C C ) + [ − x ] 补 (ACC)+[-x]_补 (ACC)+[x]
    • 每轮加法后,ACC、MQ的内容统一进行“补码的算数右移”
    • 最后再多来一次加法

三、原码、补码的除法运算

除法类型 符号位参与运算 加减次数 移位方向(被除数->余数) 移位次数 上商、加减原则 说明
原码加减交替法 n+1或n+2 n 余数的正负 若最终余数为负,则需要恢复余数
补码加减交替法 n+1 n 余数和除数是否同号 商末位恒置1

你可能感兴趣的:(计算机组成,计算机组成原理)