浮点数加减运算.docx
- 文档编号:1435663
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:10
- 大小:18.05KB
浮点数加减运算.docx
《浮点数加减运算.docx》由会员分享,可在线阅读,更多相关《浮点数加减运算.docx(10页珍藏版)》请在冰点文库上搜索。
浮点数加减运算
如果一个二进制浮点数的尾数的绝对值小于1并且大于等于0.5,(1〉|尾数|>0.5),那么这个二进制浮点数就是一个规格化的浮点数。
用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:
规格化的浮点数的尾数是正数时应该是0.1XXXXXXXXX……的形式
(0表示符号位,X表示0或1中的任意一个数值)
规格化的浮点数的尾数是负数时应该是1・0XXXXXXXXX……的形式
(I表示符号位,X表示0或1中的任意一个数值)
用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:
规格化的浮点数的尾数是正数时应该是00.1XXXXXXXXX……的形式
(00表示符号位,X表示0或1中的任意一个数值)
规格化的浮点数的尾数是负数时应该是11.0XXXXXXXXX……的形式
(11表示符号位,X表示0或1中的任意一个数值)
两个浮点数加减法的计算结果必须规格化,如果不是规格化的数,则要通过修改阶码并同时左移或者右移尾数,使其变为规格化的数。
[例]x2010X0.11011011,y=2100X-
0.10101100,浮点数均以补码表示,阶码采用双符号位,尾数采用单符号位。
求x+y。
答:
(步骤1)转换成题目中要求的浮点数格式:
浮点数X=2010X0.11011011的阶码是+010,尾数是+0.11011011
浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,
[x]浮的阶码=00010(00是两个符号位)
浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,
[x]浮的尾数=0.11011011(0是1个符号位)
浮点数y=210°x-0.10101100的阶码是+100,尾数是-0.10101100
浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,[y]浮的阶码=00100
(00是两个符号位)
浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,
[y]浮的尾数=1.01010100(1是1个符号位)
(y=2100x-0.10101100中10101100先取反变为01010011,再加1后变为01010100)
[x]沪00010,0.11011011;
[y]浮=00100,1.01010100;
(步骤2)阶数对齐:
x的阶码是+2(二进制00010),y的阶码是+4(二进制00100),阶码小的向阶码大的数对齐,x的阶码向y的阶码对齐。
x的阶码加2,从00010变成00100,此时x的阶码与y的阶码相等。
[x]浮尾数0.11011011右移两位(小数点不动,左边添加两个符号位,因为x的尾数是正数,所以添加的两个符号位是0),
[x]浮尾数变为0.00110110(11)
0.11011011(右移两位,小数点不动,左边添加两个符号位)
0.00110110(11)
因为x的阶码与y的阶码相等,都是00010,所以把x的尾数与y的尾数相加。
(步骤3)尾数相加
0.00110110(11)
+1.01010100
1.10001010(11)
因为y的尾数没有对应的位数,所以(11)直接落下来进入结果;X尾数的符号位0与y尾数的符号位1同样参与到加法运算。
(步骤4)判断计算结果是否溢出:
当计算结果的尾数只有一个符号位时,符号位与小数点后第一位相等,则没有溢出;
如果符号位与小数点后第一位不等,则产生溢岀。
一旦发生溢岀,计算结果的尾数右移一位,
同时阶码加一
本题中计算结果的尾数是1・10001010(11,其中符号位是1,小数点后第一位是
1,二者相等,没有溢出。
(步骤5)判断计算结果是否满足规格化:
用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有个符号位时
:
规格化的浮点数的尾数是正数时应该是0.1XXXXXXXXX……的形式
(0表示符号位,X表示0或1中的任意一个数值)
规格化的浮点数的尾数是负数时应该是1.0XXXXXXXXX……的形式
门芸去笛昙倍.丫芸去n式1比的件音一不粉佶)
本题中计算结果的尾数是1・10001010(11,不满足规格化的浮点数的尾数是负数
时应该是1・0XXXXXXXXX……的形式,因此不是规格化的浮点数。
为了规格化,本题中计算结果的尾数是
1.10001010(11,左移1位,同时阶码
一。
(只能左移,而且左移1位就可以了)
原来的计算结果
[x+y]浮=00100,1.10001010(11);
规格化后(尾数左移I位,小数点不动,右边添加一个0;同时阶码减一)
[x+y]浮=00011,1.00010101(10)
尾数1.00010101,满足规格化的浮点数的尾数是负数时应该是1.0XXXXXXXXX……的形式,因此是规格化的浮点数。
(步骤6)计算结果舍入处理
就近舍入(0舍1入)法:
类似”四舍五入”丢弃的最高位为I,进I;本题丢弃的是(10),最高位为1,所以向上进
1位
则有
1.00010110
结果为[x+y]浮二00011,1・00010110
直接舍弃法:
本题(10)被直接舍弃。
结果为[x+y]沪00011,1.00010101
[例]X二3,y二156,用变形补码计算x+y,并指出结果
是否溢出o
咎・
口•
(步骤1)转换成题目中要求的浮点数格式:
x=3=(3)1。
X2亠(11)2X2_3=(0.11)2X2-1
8
y=5=(5)ioX2'=(101)2X2*(0.101)2X2-1
()10表示十进制数,()2表示二进制数。
浮点数沪(0.11)2X2"的阶码是-1,尾数是+0.11。
变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。
[x]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110再加1变成111)
[x]浮的尾数=00.11000000(00是两个符号位;题目没写尾数几位,自己假定尾数10
位)
浮点数尸(0.101)2X2円的阶码是-1,尾数是+0.101。
[y]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110再加
1变成111)
[y]浮的尾数=00.10100000(00是两个符号位;题目没写尾数几位,自己假定尾数10
位)
[x]浮=11111,00.11000000;
[y]浮=11111,00.八0100000;
(步骤2)阶数对齐:
X的阶码是-1(二进制11111),y的阶码是-1(二进制mil)
因为x的阶码与y的阶码相等,都是11111,所以不用移位处理,直接把x的尾数与y的尾数相加。
(步骤3)尾数相加
00.11000000
+00.10100000
01.01100000
注意:
X尾数的符号位00与y尾数的符号位00同样参与到加法运算
(步骤4)判断计算结果是否溢岀:
当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,则产生溢岀。
一旦发生溢出,计算结果的尾数右移一位,同时阶码加一
本题中计算结果的尾数是01.01100000,其中一个符号位是0,另外一个符号位是1,两个符号位不等,则产生溢出。
计算结果的尾数01.01100000右移一位(小数点不动,左面添加最左边的符号位0),
变成00.10110000(0);同时阶码加一,从11111变成00000c
(步骤5)判断计算结果是否满足规格化:
用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:
规格化的浮点数的尾数是正数时应该是00.1XXXXXXXXX……的形式
(00表示符号位,X表示0或1中的任意一个数值)
规格化的浮点数的尾数是负数时应该是11・OXXXXXXXXX……的形式
(11表示符号位,X表示0或1中的任意一个数值)
本题中计算结果的尾数是00・10110000
(0),满足规格化的浮点数的尾数是正数时应该是
00・1XXXXXXXXX……的形式。
(步骤6)计算结果舍入处理
因为舍弃的尾数是(0),所以无论哪种舍弃方法都会得到同样的结果。
原因是舍弃0
对结果本身无影响。
因此(0)可以直接舍弃。
结果为[x+y]浮=00000,00.10110000;
(步骤7)验证结果正确性
x+y」-6-二口二(11)1。
x2_1=(1011)2x2—(0.1011)2X2。
'816161616
浮点数[x+y]=(0.1011)2x2°的阶码是0,尾数是+0.lOllo变形补码要求本题中阶码采用
补码形式并且两个符号位;尾数釆用补码形式并且两个符号位。
[x+y]浮的阶码=00000(00是两个符号位;0对应二进制是000)
[x+y]浮的尾数=00.10110000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)
步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的
[例]x=£,y二愛,用变形补码计算x+y,并指出
6432
结果是否溢出。
口•
(步骤1)转换成题目中要求的浮点数格式:
X二丄=(l)ioX2_6=
(1)2X2_6=(0.1)2X2-5
64
=(7)ioX2_5=(111)2X2_5=(0.111)2X2'2
y二
()10表示十进制数,()2表示二进制数。
浮点数x=(0.1)2X2弓的阶码是-5,尾数是+0.1。
变形补码要求本题中阶码釆用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。
[X]浮的阶码=11011(11是两个符号位;5对应二进制是101,101取反后是010,010再加1变成011)
[X]浮的尾数=00.10000000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)
浮点数尸(0.U1)2X2勺的阶码是-2,尾数是+0.lllo
[y]浮的阶码=11110(11是两个符号位;2对应二进制是010,010取反后是101,101再加1变成110)
[y]浮的尾数=00.11100000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)
[x]浮=11011,00.10000000;
[y]沪11110,00.11100000;
(步骤2)阶数对齐:
x的阶码是-5(二进制11011),y的阶码是-2(二进制11110),阶码小的向阶码大的数对齐,x的阶码向y的阶码对齐。
x的阶码加3,从-5(二进制11011)变成-2(二进制11110),此时x的阶码与y的阶码相等。
[X]浮尾数00.10000000右移三位(小数点不动,左边添加三个符号位,因为x的尾数符号位是0,所以添加的三个符号位是000)o
[x]浮尾数变为00.00010000(000)
因为移位后x的阶码与y的阶码相等,都是11110,所以把x的尾数与y的尾数相加。
(步骤3)尾数相加
00.0010000(000)
+00.11100000
00.11110000(000)
因为X的尾数没有对应的位数,所以(000)直接落下来进入结果;X尾数的符号位00与y尾数的符号位00同样参与到加法运算。
(步骤4)判断计算结果是否溢出:
当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,贝y产生溢出。
一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。
本题中计算结果的尾数是00.11110000(000),其中一个符号位是0,另外一个符号位也是
0,两个符号位相,不溢出。
(步骤5)判断计算结果是否满足规格化:
用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:
规格化的浮点数的尾数是正数时应该是00.1XXXXXXXXX……的形式
(00表示符号位,X表示0或1中的任意一个数值)
规格化的浮点数的尾数是负数时应该是11.0XXXXXXXXX的形式
(11表示符号位,X表示0或1中的任意一个数值)
本题中计算结果的尾数是00.11110000(000),满足规格化的浮点数的尾数是正数时应该
是00.1XXXXXXXXX……的形式。
(步骤6)计算结果舍入处理
因为舍弃的尾数是(000),所以无论哪种舍弃方法都会得到同样的结果。
原因是舍弃0对结果本身无影响。
因此(000)可以直接舍弃。
结果为[x+y]浮二11110,00.11110000;
(步骤7)验证结果正确性
x+y二11415(15)10x2兀(111D2X2_6=(0.1111)2X2'2
6432646464
浮点数[x+y]=(0.1111)2X2-2的阶码是-2,尾数是+0.1111。
变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。
[x+y]浮的阶码=11110(00是两个符号位;2对应二进制是010,010取反后是101,101再
加1变成110)
[x+y]浮的尾数=00.liroooo(00是两个符号位;题目没写尾数几位,自己假定尾数10位)
步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浮点 加减 运算