十进制数 (17.625)₁₀ 在内存中的存储为例子:
-
首先,将十进制数 (17.625)₁₀ 换算成二进制数 (10001.101)₂
换算步骤:将 17.62拆分成两部分:整数部分和小数部分。
-
整数部分:利用模2取余法,即除以2,直到商为0,余数反转
17 % 2 = 8 ---------> 余1 (低位)
8 % 2 = 4 ----------> 余0
4 % 2 = 2 -----------> 余0
2 % 2 = 1 -----------> 余0
1 % 2 = 0 ------------> 余1 (高位)
即:整数部分为 10001
-
小数部分:利用乘2取整法,即乘以2,直到乘位为0,进位顺序取
0.625 * 2 = 1.25 ------> 取整为1 (低位)
0.25 * 2 = 0.5 -----> 取整为0
0.5 * 2 = 1.0 -----> 取整为1
0.0 * 2 = 0.0 -----> 取整为0 (高位)
即:小数部分为 0.101
注意,小数的高位是指离小数点近的位置,反之小数的低位则是离小数点远的位置
因此,整数部分 + 小数部分 = 10001 + 0.101 = 10001.101
-
-
再将二进制数 (10001.101)₂的小数点进行左移,换算成科学计数法形式为:
1.0001101 * 2⁴ (注意,此处为二进制的科学计数法)
此时,底数、指数就显而易见
符号:因为是正数,所以符号位取0
底数:因为小数点前必为1,所以IEEE规定只记录小数点后的就好。所以,此处的底数为:0001101
指数:实际为4,必须加上127(转出的时候,减去127),所以为131。转换成二进制数也就是10000011
-
综上所述,17.625 在内存中的存储格式是:0 10000011 00011010000000000000000