文章目录
3.运算方法与运算器
3.1 定点加法、减法运算
3.1.1 补码加/减法运算
- 补码加法 公式:[x+y]补=[x]补+[y]补 (mod 2n+1) 。
- 补码减法
[x - y]补 = [x]补 + [ -y]补
[-y]补 = - [y]补 + 2^-n 即对[y]补进行求补操作。 各位取反,末位加一
3.1.2 溢出概念与检测方法(※) 3种
- 正正得负,负负得正:
- 两正数加,结果变负数:正溢(大于机器所能表示的最大数)
- 两负数加,变正数:负溢(小于机器所能表示的最小数)
- Cf为符号位产生的进位, C0为最高有效位产生的进位。Cf与C0相同时,不溢出
- 双符号位(变形补码)溢出检测法:
双符号位中的最高符号位 永远是正确符号位。
00.xxxx 11.xxxx 正确 01.xxxxx 10.xxxxx错误
使用异或门判断
3.1.3 基本的二进制加法/减法器。
一位加法逻辑电路实现
带进位链的一位全加器
多位加法器 (※)
- 思想: N位加法器包含n个全加器
- 将多个一位全加器串联,低位进位输出连接到高位进位输入。
补码减法电路实现
- [X - Y]补= [X]补+ [-Y]补
- 方法:加法器的改造
- 输入[Y]补做加法,如果输入[-Y]补则做减法。
[-Y]补=[[Y]补]补=[[Y]补]反 +1 将Y补 连同符号位一起,逐位取反末位加一 [-Y]补= [ [Y]补 ]补 - 引入Sub位:
Sub=0 时做加法,送入加法器的应是 [Y]补
Sub=1 时做减法,送入加法器的应是 [-Y]补 。如下:
- 输入[Y]补做加法,如果输入[-Y]补则做减法。
3.2 定点数的移位运算
3.3 定点乘法运算(※)
1、原码一位乘法
2、补码一位乘法
3、阵列乘法器
3.3.1 原码一位乘法
3.3.2 补码一位乘法
- 算数右移(补码一位乘法)vs 逻辑右移(原码一位乘法)
- 乘数开始时要手动在末位加0
- 注意最后一步
3.3.3 无符号数的阵列乘法器
补码乘法器运算例子:
3.4 定点除法运算
原码不恢复余数法 (加减交替法)
得到的结果为原码 (加减计算过程中用补码)
- 余数为正,商1,余数左移一位,减去除数
- 余数为负,商0,余数左移一位,加上除数
3.5 浮点加法、减法运算(※)
浮点运算步骤如下
- 比较阶码并完成对阶(小阶向大阶 对齐);移位
- 尾数求和(差)运算;
- 结果规格化:可采用规格化形式–绝对值0.1XXXX (也可采用IEEE754标准的,详见P85)
- 舍入处理:末位恒置1 / 0舍1入
- 溢出判断。
IEEE754浮点数的加减运算
阶码采用移码表示,尾数采用原码表示
3.6 并行进位加法器(※)
- 串行进位(行波进位) 加法器特点
进位信号逐位形成, 前后依赖, 因此速度较慢 - 并行进位加法器(※)
[特点]各位进位信号同时形成 .
1) 逻辑关系
C1 = G1 + P1C0
C2 = G2 + P2C1
= G2 + P2G1 + P2 P1 C0
…
Cn = Gn + PnCn-1
= Gn + PnGn-1 + …+ PnPn-1…P2P1 C0
仅与最低位的进位输入C0有关 ! 其他已知
组内并行、组间串行
组内并行、组间并行
- P* =P0P1P2P3 G* = G3+G2P3+G1P2P3+G0P1P2P3
- C4 =G0+P0·C0 C8 =G1+P1·C4 C12 =G2+P2·C8 C16 =G*+ P*·C0
- 有了C0就都产生了