计算机组成原理 浮点数运算清晰明了

注释:阶码和尾数都需要符号位区分正负

例题1:x = 2^-11*0.100101, y = 2^-10*(-0.011110),求x+y

第零步 补码表示

说明:参考我写补码的文章
例题1中:

  1. 对于x来说阶码-11 补码表示为 10101;
    尾数0.100101补码表示为00.100101
  2. 对于y来说阶码-10补码表示为 10110;
    尾数-0.011110补码表示为11.100010

第一步 阶码对阶

说明:阶码对齐后才能加减。规则是阶码小的向阶码大的数对齐,若阶码相等则不用对阶

例题1中:因为-11 < -10,所以x数值需要右移,x阶码和尾数变为
10110;00.010010(1)

第二步 尾数相加

说明:就是二进制相加,如果这个都不会建议先学学计算机基础知识
例题1中:

 00.010010(1)
+11.100010
=11.110100(1)

第三步 尾数规格

说明:规格化处理就是,当两个符号位相同(说明运算结果没有溢出),但最高数值位与符号位相同时需要进行左归,此时要把位数连续左移,直到最数值位与符号位数值不同为止。

继续例题1中:11.110100(1) 明显是最高数值位与符号位相同,需左归两次
第一次11.101001
第二次11.010010,最后一位补0

阶码由变为10110 减二变为 10100(十进制的-12)

为了帮助理解再举两个例子
例211.1xxx和00.0xxx的最高数值位与符号位相同,需左归。

11.1xxx左移一位结果为(1)11.xxx,阶码减100.0xxx左移一位结果为(0)00.xxx,阶码减1;

    当两个符号位不相同(说明运算结果溢出),需右归 。

例301.xxxx和10.xxxx的两个符号位不相同,需要进行右归。

01.xxxx右移一位结果为00.1xxx,阶码加110.xxxx右移一位结果为11.0xxx,阶码加1

第四步 尾数舍入

说明:这里看要求了,需要进一步声明的是,如果因为舍入造成尾数溢出,需要再一次进行第三步,将尾数继续规格化
在这里插入图片描述
继续例题1中:x+y结果的尾数11.010010无需舍入处理

为了帮助理解再举两个例子
例411.010100(1),使用01入法,
	结果为11.010101
	
	     11.010100(1),使用横置1法,
	结果为11.010101511.010100(0),使用01入法
	结果为11.010100

	     11.010100(0),使用横置1法,
	结果为11.010101

第五步 阶码溢出

说明:因为第三步 规格化,不论尾数如何变换,都不会造成尾数溢出,只会影响阶码大小,所以当且仅当阶码溢出时才可能抛出异常。
溢出分为以下两种情况

  1. 阶码上溢出。正指数(即阶码值)超过了最大允许值。比如阶码用8bit移码表示,正指数却有128,即无法表示(8bit移码中真值表示范围为-126~127,-127的阶码全0表示非规格化数;而-128的阶码全1,表示无穷大)即上溢出。 如果结果为整数,则称为正上溢出;如果结果为负数,则称为负上溢出。这种情况为软件故障,需要引入溢出故障处理程序来处理。

  2. 阶码下溢出。一个负指数比最小所允许的数值还要小时,发生下溢出,例如上面例子中用阶码表示-130,小于真值表示范围的最小值,发生下溢出。一般机器把下溢出时的值置为 0。

继续例题1中:阶码未溢出,无需处理,则
x + y =2^( 1*0100) * (11.010010)
将补码化为带符号原码
x + y = 2^(-1100) * (-0.101110)

为了加深理解,再来一道例题直接算

例6. x=2^1010*0.1101, y=2^1011*0.1111,求x+y

  1. 补码表示:x为01010;00.1101
    -y为01011;00.1111

  2. 阶码对阶 :x阶码小一位,对阶后x为01011;00.0110(1)

  3. 尾数相加:
    00.0110(1)
    +00.1111
    =01.0101(1)

  4. 尾数规格:
    右归一位;阶码加一
    01100;00.1010(11)

  5. 尾数舍入:
    这里我们使用0舍1入法
    00.1010(11) 转化为00.1011

  6. 阶码溢出:
    这里阶码未溢出,结果为x + y = 2^01100 * (00.1011)
    原码即 x + y = 2^1100 * (0.1011)

若是哪里有理解错误的或写错的地方,望各位读者评论或者私信指正,不胜感激。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值