题目
17.(10.0分)十进制[1]数X=130.75,其IEEE754单精度浮点数的机器码以小端[2]方式存放在以字节编址[3]的内存中,首地址为2020H。(1)-(3)题共用备选答案:A.D302C000HB.4302C000HC.42.82D000H(1)求X的IEEE754单精度浮点数的十六进制[4]机器码。
17.(10.0分)十进制[1]数X=130.75,其IEEE754单精度浮点数的机器码以小端[2]方式存放在以字节编址[3]的内存中,首地址为2020H。
(1)-(3)题共用备选答案:
A.D302C000H
B.4302C000H
C.42.82D000H
(1)求X的IEEE754单精度浮点数的十六进制[4]机器码。
题目解答
答案
将 $ X = 130.75 $ 转换为二进制[5]:$ 10000010.11_2 = 1.000001011 \times 2^7 $。
- 符号位 $ S = 0 $。
- 阶码 $ E = 7 + 127 = 134 = 10000110_2 $。
- 尾数 $ M = 00000101100000000000000 $。
组合得:$ 0 \, 10000110 \, 00000101100000000000000 $。
转换为十六进制:$ 4302C000_H $。
答案:B. $ 4302C000_H $。
解析
本题考查十进制数转换为IEEE754单精度浮点数的机器码及十六进制表示。解题思路如下:
- 首先将十进制数转换为二进制数。
- 对于整数部分,采用除2取余的方法。将130除以2,取余数,然后将商继续除以2,直到商为0。具体计算过程为:
- $130\div2 = 65\cdots\cdots0$
- $65\div2 = 32\cdots\cdots1$
- $32\div2 = 16\cdots\cdots0$
- $16\div2 = 8\cdots\cdots0$
- $8\div2 = 4\cdots\cdots0$
- $4\div2 = 2\cdots\cdots0$
- $2\div2 = 1\cdots\cdots0$
- $1\div2 = 0\cdots\cdots1$
从下往上取余数,得到整数部分的二进制表示为$10000010$。
- 对于小数部分,采用乘2取整的方法。将$0.75$乘以2,取整数部分,然后将小数部分继续乘以2,直到小数部分为0。具体计算过程为:
- $0.75\times2 = 1.5$,整数部分为1
- $0.5\times2 = 1.0$,整数部分为1
从上往下取整数部分,得到小数部分的二进制表示为$0.11$。
- 所以,$130.75$的二进制表示为$10000010.11_2$。
- 对于整数部分,采用除2取余的方法。将130除以2,取余数,然后将商继续除以2,直到商为0。具体计算过程为:
- 然后将二进制数表示为科学计数法的形式$1.xxx\times2^n$。
- 对于$10000010.11_2$,可以写成$1.000001011\times2^7$。
- 接着确定IEEE754单精度浮点数的三个部分:符号位$S$、阶码$E$和尾数$M$。
- 符号位$S$:因为$X$是正数,所以$S = 0$。
- 阶码$E$:IEEE754单精度浮点数的阶码采用偏移量为127的偏移二进制表示。这里$n = 7$,所以$E = 7 + 127 = 134$。将134转换为二进制,采用除2取余的方法:
- $134\div2 = 67\cdots\cdots0$
- $67\div2 = 33\cdots\cdots1$
- $33\div2 = 16\cdots\cdots1$
- $16\div2 = 8\cdots\cdots0$
- $8\div2 = 4\cdots\cdots0$
- $4\div2 = 2\cdots\cdots0$
- $2\div2 = 1\cdots\cdots0$
- $1\div2 = 0\cdots\cdots1$
从下往上取余数,得到$134$的二进制表示为$10000110_2$。
- 尾数$M$:科学计数法中$1$后面的部分,即$000001011$,不足23位时在右边补0,得到$00000101100000000000000$。
- 最后将符号位、阶码和尾数组合成32位的IEEE754单精度浮点数机器码。
- 组合后的机器码为$0\ 10000110\ 00000101100000000000000$。
- 将32位的二进制机器码转换为十六进制。
- 每4位二进制数对应1位十六进制数。将二进制数按每4位一组进行划分:$0100\ 0011\ 0000\ 0101\ 1000\ 0000\ 0000\ 0000$。
- 分别将每组二进制数转换为十六进制数:$4\ 3\ 0\ 5\ 8\ 0\ 0\ 0$,所以十六进制表示为$4302C000_H$。