原码、补码的乘除法总结

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,则 ( 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
请添加图片描述

请添加图片描述

  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

相关推荐

  1. 、反码、补码,计算机中负数表示

    2023-12-17 00:04:02       49 阅读
  2. 补码反码移

    2023-12-17 00:04:02       22 阅读
  3. 数据表示——/反码/补码/移/浮点数

    2023-12-17 00:04:02       72 阅读
  4. 【C语言进阶篇】、反码、补码

    2023-12-17 00:04:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 00:04:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 00:04:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 00:04:02       87 阅读
  4. Python语言-面向对象

    2023-12-17 00:04:02       96 阅读

热门阅读

  1. Linux 系统中包管理工具

    2023-12-17 00:04:02       52 阅读
  2. linux 常用脚本搜集(nginx) —— 筑梦之路

    2023-12-17 00:04:02       59 阅读
  3. c++中的new与delete

    2023-12-17 00:04:02       70 阅读
  4. Shell三剑客:sed(简介)

    2023-12-17 00:04:02       62 阅读
  5. 半导体:Gem/Secs基本协议库的开发(3)

    2023-12-17 00:04:02       54 阅读
  6. 基于BP神经网络的小车避障算法仿真与实现

    2023-12-17 00:04:02       55 阅读
  7. 包络检波的MATLAB实现

    2023-12-17 00:04:02       43 阅读