原码、补码的乘除法总结

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

0、运算器的基本组成

包括如下几个寄存器:

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

一、原码一位乘法

设机器字长为n+1=5位(含1位符号位,n=4)。x=-0.1101,y=+0.1011
请添加图片描述
请添加图片描述

  1. 符号位:不参与运算,通过异或单独确定
  2. 数值位:通过被乘数和乘数绝对值的n轮加法、移位完成
    • 根据当前乘数中参与运算的位确定(ACC)加什么
      • 若当前运算位为1,则(ACC)+[∣x∣]原(ACC)+[|x|]_原(ACC)+[x]
      • 若当前运算位为0,则(ACC)+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
请添加图片描述

请添加图片描述

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

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

除法类型符号位参与运算加减次数移位方向(被除数->余数)移位次数上商、加减原则说明
原码加减交替法n+1或n+2n余数的正负若最终余数为负,则需要恢复余数
补码加减交替法n+1n余数和除数是否同号商末位恒置1
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值