浮点数在计算机中的表示
浮点数在计算机中的表示
float单精度浮点数的存储格式
-
符号位:0正1符,注意计算机中都用补码表示
-
阶码:记得+127偏移量 2 7 − 1 = 0 1111111 ⏟ 7 个 1 2^7-1=0 \underbrace{1111111}_{7个1} 27−1=07个1 1111111
-
尾数:共23位,末尾补零
10进制->float步骤
- 规格化:将 112.5 D − > 1.1100001 × 2 6 112.5D->1.1100001 \times 2^6 112.5D−>1.1100001×26,即 符号位 . 尾 数 阶码 符号位.尾数^{阶码} 符号位.尾数阶码
- 求阶码:阶码 = 阶码+127偏移量, 即 6 + 127 = 10000101 B 6+127=10000101B 6+127=10000101B
- 补全尾数
double双精度浮点数的存储格式
-
符号位:0正1符,注意计算机中都用补码表示
-
阶码:记得+1023偏移量 2 10 − 1 = 0 1111111111 ⏟ 10 个 1 2^{10}-1=0 \underbrace{1111111111}_{10个1} 210−1=010个1 1111111111
-
尾数:共23位,末尾补零
例题
1) 112.5 D 112.5D 112.5D 转换为float
- 规格化:将$112.5D->1.1100001 \times 2^6 $,即 符号位 . 尾 数 阶码 符号位.尾数^{阶码} 符号位.尾数阶码
- 求阶码:阶码=阶码+127偏移量 6 + 127 = 10000101 B 6+127=10000101B 6+127=10000101B
- 补全尾数 1100001 000 ⋯ 000 ⏟ 16 个 0 1100001 \, \underbrace{000 \cdots 000}_{16个0} 110000116个0 000⋯000
- 最终: 0 ⏞ 符号位 10000101 ⏞ 阶码 1100001 000 ⋯ 000 ⏟ 16 个 0 ⏞ 尾数 \overbrace{0}^{符号位} \, \overbrace{10000101}^{阶码} \, \overbrace{ 1100001 \, \underbrace{000 \cdots 000}_{16个0}}^{尾数} 0 符号位10000101 阶码110000116个0 000⋯000 尾数
2) 0.0101 B 0.0101B 0.0101B 转换为float