第三章 运算方法与运算器

定点补码加减法运算

补码加减法运算方法

  • 补码加法:[x]补 + [y]补 = [x + y]补 mod M
  • 补码减法:[x]补 - [y]补 = [x - y]补 mod M

溢出及检测

运算结果超出数据类型所能表示数据范围的现象称为溢出

溢出检测

操作数与运算结果的符号位是否一致

只有符号相同的数相加,才有可能产生溢出,因此检测运算结果的符号位,是否与操作数一致
设操作数为S1XXXX和S2XXXX,其中S1和S2为他们的符号位,结果为SXXXX,S是结果的标志位,V是溢出标志位,那么
V = S1 && S2 && !S + !S1 && !S2 && S
如果符号位不同,则S1和S2必定是0和1的组合,其结果V一定为0
如果符号位相同,则可能同时为0或者同时为1,这时就要看结果的符号位S了

最高位的进位和符号位的进位是否一致

最高位C和符号位S的进位,如果不同步,则发生了溢出
V = C ^ S

变形补码

变形补码就是用两个位来表示符号位,正数符号位00,负数符号位11
如果运算后的结果为01,则上溢,10则下溢

补码加减法的逻辑实现

  • 利用一位全加器(FA)作为基本的加法单元,低位FA的进位,直接送到相邻高位FA的进位输入,构成一个串行进位链
  • 进行加法运算时,直接送入全加器,进行减法运算时,减数先求补
  • 采用基于变形补码的双符号位溢出检测方法
  • 不支持逻辑运算

移码加减运算及实现逻辑

移码的加法运算

  • 公式1:[x]移 + [y]移 = [x + y]移 + 2^n
  • 公式2:[x]移 + [y]移 = [x + y]补
  • 公式3:[x]移 + [y]补 = [x + y]移 mod 2^(n+1)

求移码的加法有三种方式

  • 直接对两数的移码求和,然后将高位取反
  • 直接求出两数和的补码,然后将高位取反
  • 用一个数的移码,加另一个数的补码

移码加减法的溢出判断

直接采用移码运算的溢出判断方法

只有符号相同的加法,才会溢出
正数的移码,符号位为1,如果两个正数的移码相加,符号位1+1=0,结果的符号位变成0
因此,移码相加后,符号位与操作数相同,则发生了溢出

采用双符号判断

  • S1S2 = 00,结果为负,未溢出
  • S1S2 = 01,结果为正,未溢出
  • S1S2 = 10,上溢
  • S1S2 = 11,下溢

定点乘法运算

机器数的移位操作

移位操作是乘法实现过程的基本操作,又分为逻辑移位和算术移位
逻辑移位:左移和右移,空出来的位置都补0
算术移位:左移时低位补0,右移时高位补符号位

原码一位乘法

原码一位乘法

符号位的确定

两个乘数符号位的异或

乘积的数值
  • 由于符号位已经单独处理了࿰
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值