已知X=-7.25,Y=28.5625 .(1)将X和Y转换成二进制[1]浮点表示(阶码5位,尾数11位,各包含1位符号位)。(2)求X-Y.
已知X=-7.25,Y=28.5625 .
(1)将X和Y转换成二进制[1]浮点表示(阶码5位,尾数11位,各包含1位符号位)。
(2)求X-Y.
题目解答
答案
(1) 将X和Y转换成二进制浮点表示
首先,先转换X = -7.25和Y = 28.5625。
转换X = -7.25
十进制[2]转二进制:
整数部分:7 -> 111
小数部分:0.25 -> 0.01 (因为0.25 = 1/4)
结合起来:111.01
规格化[3]:111.01 可以写为 1.1101 * 2^2
阶码:偏移量通常是2^(k-1)-1,其中k是阶码的位数。这里k=4(不包括符号位),所以偏移量是7。实际阶码为2+7=9,即1001(加上符号位)。
尾数:去掉隐含的1,保留小数点后的1101,然后填充到11位,得到11010000000。
符号位:负数,所以符号位为1。
最终的二进制浮点表示为:1 1001 11010000000
转换Y = 28.5625
十进制转二进制:
整数部分:28 -> 11100
小数部分:0.5625 -> 0.1001 (因为0.5625 = 9/16)
结合起来:11100.1001
规格化:11100.1001 可以写为 1.11001001 * 2^4
阶码:实际阶码为4+7=11,即1011(加上符号位)。
尾数:去掉隐含的1,保留小数点后的11001001,然后填充到11位,得到11001001000。
符号位:正数,所以符号位为0。
最终的二进制浮点表示为:0 1011 11001001000
(2) 求X - Y
在进行减法之前,需要对齐两个数的小数点,这意味着要调整它们的阶码,使得两者相同。在这个例子中,我们将使用较大的阶码,也就是11(对于Y),并相应地调整X的尾数。
X: 1 1001 11010000000 阶码变为11,即1011,需要右移2位尾数,得到1 1011 1101000000000 (实际上只保留11位,所以是11010000000)。
Y: 0 1011 11001001000
现在我们可以直接相减了,但因为X是负数,实际上我们要做的是加法(X + (-Y))。因此,我们需要取Y的补码。
Y的补码(负Y):1 0100 00110111000
执行加法:
1 1011 11010000000
+ 1 0100 00110111000
-------------------
1 0000 00000111000
所以,X - Y 的近似结果是 -31.828125.
解析
首先,将X和Y转换成二进制形式,然后根据阶码和尾数的位数要求进行调整。
步骤 2:计算X-Y
将X和Y的二进制浮点表示进行减法运算,得到结果。