某计算机系统中,16位浮点数的表示格式如图6-1所示。其中阶码4位(含1位符号)为定点整数,尾数12位(含1位符号)为定点小数,设一个数机器码为1110001010000000。 若阶码为移码且尾数为原码,则其十进制数真值为(2);若阶码为补码且尾数为补

admin2009-02-15  53

问题 某计算机系统中,16位浮点数的表示格式如图6-1所示。其中阶码4位(含1位符号)为定点整数,尾数12位(含1位符号)为定点小数,设一个数机器码为1110001010000000。

若阶码为移码且尾数为原码,则其十进制数真值为(2);若阶码为补码且尾数为补码,则其十进制数真值规格化后的机器码为(3)。

选项 A、11110001010000
B、11110101000000
C、1101010100000000
D、1110001010000000

答案C

解析 为了充分利用尾数来表示更多的有效数字,即提高数据的表示精度,通常采用规格化浮点数。规定浮点数在运算结束将运算结果存到计算机中时,必须是规格化的浮点数。规格化浮点数尾数的最高数值位是有效数字,即正尾数0.5≤F<1,负尾数-1<F≤-0.5。要求规格化以后,其尾数部分是正数时为0.1×××的形式,是负数时,对于原码为1.1×××的形式,对于补码为1.0×××的形式,可以通过尾数小数点的左右移动和阶码的变化实现。
   对于本试题的解答思路是,对给定的机器码按给定的浮点数格式得到阶码和尾数,然后将阶码变为十进制数,最后得到浮点数的十进制真值。判断如果给定的浮点数机器码不是规格化表示的,则可将其表示为规格化的机器码。规格化时,先看给定的浮点数机器码的尾数是用什么码表示的,然后看看是否已是规格化数,如不是,将尾数小数点移位,但要注意,为保持浮点数的真值不变,阶码一定要相应地调整。另外在解答此类题目时,还要注意题目条件中给出的阶码和尾数是用什么码表示的,否则很容易出错,而得不到正确的计算结果,
   针对本道题目,对所给机器码1110001010000000,按所规定的浮点数表示形式,可知阶码为1110(最高位为阶符1),尾数为001010000000(最高位为尾符0)。
   ①若阶码为移码,1110表示为十进制数加6,尾数为原码表示加0.0101B,所以浮点数为26×0.0101B =010100B=20。
   ②若阶码为补码,1110表示为十进制数减2;尾数为补码,因该尾数为正数,即加0.0101,该浮点数为2-2×0.0101B=0.000101B=0.078125D。将此浮点数用规格化数形式表示。2-2×0.0101B=2-3×0.101B,阶码-3的补码为1101,因为浮点数规格化要求尾数最高数据位为有效数据位,即尾数绝对值大于等于0.5。实际判断中,对于尾数以补码表示时,看符号位与最高位是否相同,如不相同即为规格化数,如相同即为非规格化数,故规格化后的机器码为1101010100000000。对本题所给出的机器码来说,就是使其尾数 001010000000左移一位成为010100000000,相当于尾数数值乘2,相应地其阶码就应减1,即-2减1得-3。
转载请注明原文地址:https://jikaoti.com/ti/w4B7FFFM
0

最新回复(0)