2.5 浮点数的表示及运算(浮点数加减法运算)

2.5.2 浮点数的加减法运算

运算步骤:

        ①对阶操作

        ②尾数的加减操作

        ③规格化操作

        ④舍入操作

        ⑤判断阶码溢出

        对阶就是“小数点对齐”,需要注意的是指数要相同,我们将采用阶码(你也可以称作为指数)的值来对阶,比如:

x=+0.1101 × 2^4
y=+0.1001 × 2^3

对阶后:

x=+0.1101 × 2^4
y=+0.01001 × 2^4

这里4大,所以y按照4来移动尾数。

        小数点对齐后,接下来就相加减,这里就用x+y

    00.1101 
   +00.01001 
 ————————————
    01.00011

结果为01.00011 x 2^4,很明显这个结果已经产生上溢。

        接下来要做规格化操作,即补码表示时,形式必须是1.0**或0.1**。这里跟据情况:

①两个符号位不相同,右规;比如这个例子的符号位01,数据溢出到符号位,尾数需要右移来规范,就变成了00.10011 x 2^5

②两个符号位相同,但是最高数值位与符号位相同,左规;假如00.010011 x 2^6,这明显不符合1.0**或0.1**的形式,所以尾数左移是其符合这个形式:00.10011 x 2^5。

        尾数在对阶和右规的过程中,最低几位的数据移出若丢弃,会造成误差,用辅助电路存储。需要在运算结束时舍入

        舍入的方法有多种,一般采用的方法为0舍1入法(跟四舍五入差不多),就是若舍掉的最高位为0时,直接舍掉,若最高位为1是,需要在剩下的尾数的最低位+1,负数时当丢失的最高位为1,其它位不全为0(或者说只要有1),则尾数+1修正。来看例子(假如符号位和数据位共6位):

例1:00.1001001,保留4位数据,这里尾部的001是多余的,我们直接舍去即可,结果为00.1001;

例2:00.10011,这里舍掉的是1,需要给舍掉后的00.1001加1,结果为00.1010;

例3:00.111111,这种情况,要是加1发现结果会溢出,那么继续进行右规操作。

        最后一步,判阶码溢出:在右规和舍入的过程中都有可能造成阶码的溢出。 若最后没有溢出,则运算结束;否则需要做进一步处理。

下溢:将运算结果置为机器零;

上溢:超出阶码表示的最大正数,直接置溢出标志。

        综合例子:

 

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值