6.2定点数运算

SyEic_L MVP++

定点数加减运算

1.补码加减运算

[x+y]=2n+x+y=2n+x+2n+y=[x]+[y]  (mod2n) [x+y]_补 = 2^n + x+y = 2^n +x+2^n+y = [x]_补+[y]_补\ \ (mod 2^n) [xy]=2n+xy=2n+x+2ny=[x]+[y]  (mod2n) [x-y]_补 = 2^n + x-y = 2^n +x+2^n-y = [x]_补+[-y]_补\ \ (mod 2^n)

补码加减运算部件

  • Sub = 0:加法
  • Sub = 1:减法

标志信息

  • 无符号数的CF=1,则溢出
  • 带符号数的OF=1,则溢出

2.原码加减运算

3.移码加减运算

定点数乘法运算

4.原码乘法运算

  • 可用ALU和移位器实现乘法运算

无符号整数乘法运算乘法过程

32位无符号乘法运算

  • 被乘数寄存器X
  • 乘积寄存器P:开始置初始部分积P0=0;结束时,存放的是64位的高32位
  • 乘数寄存器Y:开始时置乘数;结束时,存放的是64位乘积的低32位
  • 进位触发器C
  • 循环次数计数器Cn
  • ALU

浮点数尾数乘运算

  • 符号与数值分开处理:积符异或得到,数值用无符号乘法运算
  • 浮点数尾数乘运算

两位乘法:每次取乘数两位判断,只需n/2次循环,快一倍

两位乘法

5.补码乘法运算

补码乘法运算

6.快速乘法器

定点数除法运算

7.原码除法运算

原码除法运算

  • 除前预处理

    • 被除数=0被除数=0除数!=0除数!=0,商为0
    • 除数=0除数 = 0,发出“除数为0”异常
    • 被除数和除数都为0,则有些机器产生一个不发信号的NaN
  • 计算机内部无符号数除法运算

    • 通过被除数(中间余数)减除数来得到每一位商

      够减上商1,不够减上商0

    • 基本操作为减法(用加法实现)和移位,与乘法用同一套硬件

  • 将所有情况统一为:一个2n位数除以一个n位数

    • 定点正整数(无符号数)相除:在被除数的高位添n个0
    • 定点正小数(原码小数)相除:在被除数的低位添n个0

32位除法运算逻辑结构图

  • 恢复除数法恢复除数法

  • 不恢复余数除法
    正 1 减 负 0 加

    不恢复除数法

  • 小数除法恢复除数法
    小数除法恢复除数法

  • 小数除法不恢复余数除法

    小数除法不恢复除数法

8.补码除法运算

带符号数除法

n位扩展2n位:符号扩展

定点运算部件

  • 以一个或多个ALU(或加法器)为核心,加上移位器寄存器组,在相应控制逻辑的控制下,通过多路选择器和实现数据传送的总线等,即可以实现各种运算——也就是构成了一个运算数据通路
  • Title: 6.2定点数运算
  • Author: SyEic_L
  • Created at : 2025-04-19 17:42:04
  • Updated at : 2025-04-19 17:42:04
  • Link: https://blog.syeicl.vip/2025/04/19/6-2定点数运算/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments