浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含2位符号位)。若有两个数X=2^7×29/32,Y=2^5×5/8,则用浮点加法计算X+Y的最终结果是()。
A. 001111100010
B. 001110100010
C. 010000010001
D. 发生溢出
[tag_link]
正确答案:D
本题考查浮点数加减。
X的浮点数格式为00,111;00,11101(分号前为阶码,分号后为尾数),Y的浮点数格式为00,101;00,10100。
然后根据浮点数的加法步骤进行运算。
第一步:对阶。X、Y阶码相减,即00,111-00,101=00,111+11,0111=00,010,可知X的阶码比Y的阶码大2(这一步可直接目测)。根据小阶向大阶看齐的原则,将Y的阶码加2,尾数右移2位,将Y变为00,111;00,00101。
第二步:尾数相加。即00,11101+00,00101=01,00010,尾数相加结果符号位为01,故需右规。
第三步:规格化。将尾数右移1位,阶码加1,得X+Y为01,000;00,10001。
第四步:判溢出。阶码符号位为01,说明发生溢出。
本题容易误选选项B、C,这是因为选项B、C本身并没有计算错误,只是它们不是最终结果,选项B少了第3步和第4步,选项C少了第4步。
【偷懒法】本题也可以直接用数学知识对原数进行计算,然后将计算的结果转换成浮点数的格式。
X+Y = 29/32×2^7 + 5/8×2^5 = 29/32×2^7 + 5/32×2^7 = (29/32+5/32)×2^7 = 34/32×2^7 = 17/32×2^8,阶码用补码表示,数值位3位,最大只能表示7,即X+Y的结果的阶码8超出了该浮点数的表示范围,故溢出。