定点运算
定点加减法
补码加减法规则
补码加法:符号位作为数的一部分参与运算
补码减法:减一个数等于加这个数的补码
溢出与检测
溢出概念
正溢 - 运算结果为正且超过机器表示范围
负溢 - 运算结果为负且超过机器表示范围
上溢 - 结果的绝对值超过机器所能表示的最大绝对值(overflow)
下溢 - 结果的绝对值超过机器所能表示的最小绝对值(underflow)
溢出检测
双符号位法,即变形补码法或模4补码法
变形补码:前两位为符号位,即00表示正数,11表示负数,两个符号位都参与运算,超过两个符号位的进位丢弃
溢出检测规则:如果结果的双符号位出现了01(OF-上)或10(UF-下)则溢出。最高符号位永远表示结果的正确符号
溢出举例:
可以看到溢出的直观表现为“两个正数相加得到了负数”,类似也有“两个负数相加得到正数”
单符号位法
从双符号位法可以看出,溢出的条件为“最高有效位与符号位只有一个进位”,由此得到单符号位溢出判别法:如果最高有效位和符号位只有一个进位则判别为溢出
举例:
加法器
一位全加器FA

N位加法器
n位加法器包含
n个全加器 将n个一位全加器串联
低位进位输出连接到高位进位输入

一位全加器真值表

Ai和Bi为两个输入,Ci为前一位运算传来的进位,C(i+1)为此次运算生成的进位,Si为运算结果
先行加法器:直接用逻辑运算取代加法运算来获得进位(并行进位)
并行进位举例:某加法器进位链小组信号为C4C3C2C1,低位来的进位信号为C0,写出串行进位和并行进位下C4C3C2C1的表达式
先行进位芯片 CLA74182:

四位运算器芯片 SN74181

定点乘法
无符号阵列乘法
即把符号先单独拿出来,把两个数作为正数相乘,再把符号位加上
符号的计算只需要把两个数的符号做异或即可。下面只讨论两个正数相乘
部分积:1位乘法计算出来的积
部分积举例:A = 11011, B = 10101,计算A*B
令aibj表示A中第i位乘B中第j位得到的部分积,则得到如下部分积矩阵
按照乘法的原则,应该对这些部分积做如下操作来得到结果
阵列乘法器:

补码一位乘法流程与硬件逻辑

定点除法

恢复余数法
需要进行恢复余数的操作:
余数是负数,必须恢复余数
绝对值运算,余数不可能是负数
恢复余数的操作次数不确定:
运算时间不固定
最慢除法(每次都不够除),拖慢除法速度
实际应用通常采用不恢复余数除法
加减交替法(不恢复余数法)
利用了2进制数的特性
已知被除数Ci和除数B
计算Ci-B得到结果C(i+1)
如果C(i+1)为负(即第一位为1)则此位结果为0,下一次操作改为加法。C(i+1)左移一位
如果C(i+1)为正(即第一位为0)则此位结果为1,下一次操作仍为减法。C(i+1)左移一位
可控制加/减法(CAS)单元

原码阵列除法器

Last updated
Was this helpful?