————————————————————————————————————————————————
以下的1,2,3步都懂了,但是第4步“舍入处理”和第5步“判断出”有疑问:
题目:已知:X=(2的010次方)*(0.11011011), Y=(2的100次方)*(-0.10101100)
求X+Y
书上的推导过程是这样的:
假设两个数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它的浮点表示分别为:
[X]浮=00010,0,11011011
[Y]浮=00100,1,01010100
1)求阶差并对阶:
EX-EY=[EX]补+[-EY]补=00010+11100=11110,
则EX-EY=-2,表示X的阶码小,应使应该使 Mx右移2位,Ex加2,得到
[X]浮=00100,0,00110110(11) (其中11表示Mx右移2位后移出的最低两位数)
2)尾数求和:
0.00110110(11)
+ 1.01010100
___________________
1.10001010(11)
3)规范化处理:
尾数运算结果的符号位与最高位数值为同值,应该执行左规处理,尾数左移一位,阶码减1,结果为1.00010101(10),
阶码为00011
————————————————————————————————————————————
(问题1: 以下的“舍入处理”有什么作用啊)
4)舍入处理:
采用0舍1入法处理,则有
1.00010101
+ 1
____________
1.00010110
5)判断出:
阶码符号位为00,不溢出,故得最终结果为
x+y=(2的011)*(-0.11101010)
(问题2:此尾数“0.11101010”是如何得到的啊,是不是书上的答案引错了啊,应该是“0.00010110”啊 ,要不“舍入处理”有什么用啊)
请会此算法的人帮助,
3 个解决方案
#1
你这个好像不是IEEE754的浮点标准了,IEEE754浮点格式符号位在最前面
#2
好的,我再回去看看书
#3
初学者没有必要对细节这样执着,不如直接进入编程,在练习的过程中遇到问题再回头研究这些细节,效果会更好。否则很快你会对编程失去信心的!
#1
你这个好像不是IEEE754的浮点标准了,IEEE754浮点格式符号位在最前面
#2
好的,我再回去看看书
#3
初学者没有必要对细节这样执着,不如直接进入编程,在练习的过程中遇到问题再回头研究这些细节,效果会更好。否则很快你会对编程失去信心的!