xju浮点数加减法舍0入1

步骤如下:

1.对阶

对阶目的是使阶码相同,遵循阶码小的向阶码大的看齐,使阶码小的尾数右移,每右移一位(右移相当于除2,左移相当于乘2),阶码加 1 1 1
举个例子:
两浮点数: X = 0.1101 × 2 01 X = 0.1101 \times 2 ^{01} X=0.1101×201 Y = ( − 0.1010 ) × 2 11 Y = \left( -0.1010 \right) \times 2 ^{11} Y=(0.1010)×211
首先写出两浮点数的补码表示:(负数:真值按位取反。用双符号位表示可以观察阶符来判断是否溢出)
[ X ] 补 = 00 , 01 ; 00.1101 \left[ X \right] 补 =00,01;00.1101 [X]=00,01;00.1101
[ Y ] 补 = 00 , 11 ; 11.0110 \left[ Y \right] 补 =00,11;11.0110 [Y]=00,11;11.0110
求阶差:用小的阶码减大的阶码即可,求得-2,因此将X的尾数右移2位,其阶码加2。
[ X ] 补 = 00 , 11 ; 00.0011 ( 01 ) \left[ X \right] 补 =00,11;00.0011(01) [X]=00,11;00.001101
很多读者可能会疑惑: 为什么X的尾数右移2位后,移出去的数字还要用括号记录下来。
原因: 如果将XY的尾数相加后没有满足规格化的条件,从而进行规格化,需要将XY相加得到的尾数进行左移(左规)时,这时候之前移出去的数字又利用了起来,从而减小了误差。如果没有记录之前移出去的数字,那么左移时低位会补0,显然如果记录了数字比如01,总比00造成的误差更小

对阶的时候右移,需要进行舍0入1判断。入1 是在***最低有效位***进行加1
对于无符号数,右移之后高位补0;对于有符号数,符号位一起移动,正数高位补0,负数高位补1
対阶的过程中右移2位,不是右移一次就判断一次。是右移结束后看最高位,如果一次一次的移就不存在看最高位了

2.尾数求和

在这里插入图片描述

3.规格化

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.舍入(舍0入1,仅仅针对右移,别问为什么)

在对阶和右规的过程中可能会将尾数的低位丢失
引起误差,影响精度。为此,引入舍入来提高尾数的精度。常用舍入方法有以下两种。
在这里插入图片描述
在这里插入图片描述

可能读者会疑惑:尾数溢出怎么判断?为什么这里进行的是右规?
尾数溢出就是尾数的双符号位不相同,嗯,右规的话,背住就好。
记住假溢出时候,符号位的最高位是正确的符号位。

5.溢出判断

记住,只看阶码的符号位
在这里插入图片描述

练习题


答案如下:(字迹不好将就看看)
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值