题目
设浮点数字长16位,其中阶码4位(含1位阶符),尾数12位(含1位数符),计算:(1) 将十进制[1]数(51/128)转换成二进制[2]规格化[3]浮点数(其中阶码采用移码,尾数采用补码)(2) 按此浮点数格式写出浮点数的范围(阶码用真值,尾数用补码)51/128=0.0110011=0.1100110times2^-1,按照阶码采用4位移码、尾数采用12位补码的形式为0.1100110000times2^0111按照上述浮点数格式,最大正数为(1-2^-11)times2^7,最小负数-1times2^7
设浮点数字长16位,其中阶码4位(含1位阶符),尾数12位(含1位数符),计算:
(1) 将十进制[1]数$(51/128)$转换成二进制[2]规格化[3]浮点数(其中阶码采用移码,尾数采用补码)
(2) 按此浮点数格式写出浮点数的范围(阶码用真值,尾数用补码)
$51/128=0.0110011=0.1100110\times2^{-1}$,按照阶码采用4位移码、尾数采用12位补码的形式为$0.1100110000\times2^{0111}$
按照上述浮点数格式,最大正数为$(1-2^{-11})\times2^{7}$,最小负数$-1\times2^{7}$
题目解答
答案
1. 将 $ \frac{51}{128} = 0.0110011_2 $ 转换为规格化形式:
\[
0.1100110_2 \times 2^{-1}
\]
阶码 $ E = -1 $,移码为 $ 0111 $。尾数为 $ 0.11001100000 $(补码表示)。
最终表示为:
\[
0111\ 011001100000
\]
2. 浮点数范围:
- 最大正数:$ (1 - 2^{-11}) \times 2^7 $。
- 最小负数:$ -1 \times 2^7 $。
(注:最小正数为 $ 2^{-9} $,最大负数为 $ -2^{-19} $,但非题目核心要求。)
答案:
(1) 0111 011001100000
(2) 最大正数为 $ (1 - 2^{-11}) \times 2^7 $,最小负数为 $ -1 \times 2^7 $。
解析
本题主要考查十进制数转换为二进制规格化浮点数以及浮点数格式下范围的计算,解题思路如下:
(1) 将十进制数$(51/128)$转换成二进制规格化浮点数
- 将十进制数转换为二进制数:
- 先将$51$转换为二进制,$51 = 32 + 16 + 2 + 1=2^5 + 2^4 + 2^1 + 2^0$,所以$51_{(10)} = 110011_{(2)}$。
- 再将$128$转换为二进制,$128 = 2^7$,所以$128_{(10)} = 10000000_{(2)}$。
- 则$\frac{51}{128}=\frac{110011_{(2)}}{10000000_{(2)}} = 0.0110011_{(2)}$。
- 将二进制数转换为规格化形式:
- 规格化形式要求尾数部分的最高位为$1$,对于$0.0110011_{(2)}$,可以写成$0.1100110_{(2)}\times2^{-1}$。
- 确定阶码和尾数的表示形式:
- 阶码:已知阶码采用$4$位移码表示,阶码真值$E=-1$。移码与真值的关系为$[E]_{移}=E + 2^{n - 1}$($n$为阶码位数),这里$n = 4$,则$[E]_{移}=-1+2^{4 - 1}=-1 + 8 = 7$,$7_{(10)} = 0111_{(2)}$。
- 尾数:尾数采用$12$位补码表示,由于是正数,正数的补码与原码相同,所以$0.1100110$补齐到$12$位为$0.11001100000$,去掉小数点后为$011001100000$。
- 最终浮点数表示为$0111\ 011001100000$。
(2) 按此浮点数格式写出浮点数的范围
- 最大正数:
- 阶码最大时,浮点数最大。阶码$4$位(含$1$位阶符),最大阶码真值为$2^{4 - 1}-1 = 7$。
- 尾数$12$位(含$1$位数符),最大正数尾数为$1 - 2^{-11}$(因为尾数最高位为$1$,其余$11$位全为$1$时表示最大正数)。
- 所以最大正数为$(1 - 2^{-11})\times2^{7}$。
- 最小负数:
- 阶码最大且尾数为$-1$时,浮点数最小。阶码最大真值为$7$,尾数为$-1$,其$12$位补码为$100000000000$。
- 所以最小负数为$-1\times2^{7}$。