4.5.1原码除法运算

原码除法运算是计算机中实现定点数除法的重要方法,其核心特点是符号位与数值部分分开处理,运算过程中通过循环的移位-比较-上商操作完成除法运算。

一、原码除法运算原理

  1. 符号位处理
    商的符号位由被除数与除数的符号位异或得到:
    符号位=被除数符号⊕除数符号\text{符号位} = \text{被除数符号} \oplus \text{除数符号}符号位=被除数符号除数符号

  2. 数值部分处理
    数值部分取绝对值进行无符号除法运算,结果即为商的绝对值。

  3. 常见方法

    • 恢复余数法:余数为负时恢复后继续操作。
    • 不恢复余数法(加减交替法):直接调整余数避免恢复,效率更高(常用)。

二、恢复余数法的运算步骤

设被除数为 XXX,除数为 YYY,商的位数为 nnn,步骤如下:

  1. 初始化

    • 余数寄存器(R)初始化为被除数绝对值;
    • 商寄存器(Q)初始化为0;
    • 除数寄存器(M)存入除数绝对值 ∣Y∣|Y|Y
  2. 逐位求商
    循环 nnn 次:

    • 余数左移1位
    • 余数 = 余数 - 除数
    • 判断余数符号
      • 若余数 ≥ 0:当前商位设为1,继续;
      • 若余数 < 0:当前商位设为0,恢复余数(余数 += 除数)。
  3. 最终调整余数
    最后一次余数可能需要恢复为原值。

三、加减交替法(不恢复余数法)的步骤

通过调整余数符号简化操作:

  1. 余数左移1位
  2. 根据余数符号执行操作
    • 若余数 ≥ 0:余数 -= 除数;
    • 若余数 < 0:余数 += 除数。
  3. 设置商位
    • 商的最低位设为1(余数≥0)或0(余数<0)。

**四、流程图表示

在这里插入图片描述

五、关键点总结

  1. 位数对齐:被除数必须小于除数,否则溢出。
  2. 余数处理:恢复余数法需要额外恢复步骤,加减交替法通过加减除数调整余数符号。
  3. 商的形成:通过余数正负决定商位,逐次左移生成。

4.5.2补码除法运算

补码除法运算(加减交替法)是一种高效的带符号定点数除法实现方法,其核心是通过符号位直接参与运算、避免余数恢复步骤。

一、补码除法运算规则

  1. 符号处理原则

    • 被除数X和除数Y同符号时,第1次做X - Y
    • 异号时,第1次做X + Y
  2. 余数处理规则

    • 余数R与Y同符号:商位取1,下一步做2R - Y
    • 余数R与Y异符号:商位取0,下一步做2R + Y
  3. 末位恒置1

    • 完成n次迭代后,将商的最低位强制置1,减小误差。

二、算法流程图

在这里插入图片描述

三、关键步骤解析

步骤1:初始化和符号判断
  • 输入的被除数X除数Y均以补码形式存储。
  • 判断符号位的异同,决定第一次操作是加还是减。
步骤2:余数处理与商位确定
  • 余数与除数同符号:商位为1,余数左移后减Y(数学等价于2R - Y);
  • 余数与除数异符号:商位为0,余数左移后加Y(等价于2R + Y)。
步骤3:迭代与末位处理
  • 迭代次数为数据总位数(如32位系统需执行32次);
  • 最终对商的最低位强制置1,简化余数修正步骤。

四、实例演示

假设X = -0.10101(补码1.01011),Y = 0.11011(补码0.11011),求X/Y

1. 初始化

  • A = 1.01011(X补)
  • B = 0.11011(Y补)
  • C = 1.00101(-Y补)
  • Q = 0.0000

2. 符号判断

  • X补符号位为1,Y补符号位为0 → 异号,第1步执行X + Y
1.01011   (X补)
+0.11011  (Y补)
------------
0.00110   (余数R, 正数)

3. 处理余数与商位

  • 余数R符号为0(与Y同符号),商位Q左移添1 → Q = 0.001
  • 新余数R = 2*0.00110 - 0.11011 = 0.01100 - 0.11011 = 1.10001(负数)。

4. 迭代至结束

  • 余数为负(与Y异号),商位添0 → Q = 0.0010
  • R = 2*1.10001 + 0.11011 = 1.00010 + 0.11011 = 1.11101
  • 重复逻辑直至5次迭代完成,强制末位置1,得到商Q = 1.0011(补码形式)。

5. 结果

  • -0.1101(真值);
  • 余数:需根据实际运算调整。

五、对比原码除法

特点 补码除法 原码除法
符号处理 符号位直接参与运算 符号位单独处理
余数调整 无需恢复余数(加减交替法) 可能需要恢复余数
适用性 带符号定点数 无符号或需要分离符号的场景
硬件实现 控制逻辑更简单,效率高 需额外处理符号逻辑

4.5.3阵列除法器

阵列除法器是一种利用并行结构实现高速除法运算的硬件设备,通过阵列结构实现多位同时计算。

在这里插入图片描述

一、核心设计原理

  1. 基于不恢复余数法(加减交替法)
  2. 采用n×(n+1)矩阵结构实现n位除法
  3. 并行信号传递机制:
    • 水平方向:余数传播通道
    • 垂直方向:进位/借位传递通道

二、硬件结构组成

在这里插入图片描述

三、**关键运算步骤(以4位除法为例))

  1. 初始化阶段:

    • 被除数装入余数寄存器(8位)
    • 除数装入D寄存器(4位)
    • 清空商寄存器
  2. 迭代过程(4次循环):
    在这里插入图片描述

  3. 每位运算详细流程:

    • 符号检测:判断余数最高位(1=负,0=正)
    • 位操作:
      • 余数正:减去除数(D)
      • 余数负:加上除数(D)
    • 商位确定:
      • 新的余数符号决定商值(0/1)
    • 移位操作:
      • 余数左移1位
      • 商寄存器左移1位插入新商位

四、数值运算示例

被除数=0111(7),除数=0011(3)

步数 操作 余数变化 商位
1 初始余数 0111 0000 -
2 0111-0011=0100 0100 <<1=1000 1
3 1000-0011=1101 1101 <<1=1010 0
4 1010+0011=1101 1101 <<1=1010 0
5 1010+0011=1101 最终余数=1 0

结果:商=0010(2),余数=0001(1)

五、关键技术特点

  1. 硬件加速优势

    • 运算时间:O(n)
    • 比串行除法快n倍
  2. 逻辑复杂度分析

    • 需要n²个可控加减单元
    • 复杂的进位链设计
    • 高精度符号检测电路
  3. 核心优点

    • 流水线吞吐量高
    • 时钟周期可预测
    • 适合VLSI实现
  4. 应用限制

    • 硬件资源消耗大
    • 功耗较高
    • 主要应用于对速度要求苛刻的DSP芯片

六、电路优化技术

  1. 进位提前技术(CLA)
  2. 条件求和加法器
  3. 符号预测逻辑
  4. 热备冗余单元设计
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐