IEEE 754 是浮点数运算的国际标准,它定义了如何在计算机中存储和表示实数。最常见的两种格式是单精度(32位)和双精度(64位)。下面我们以 单精度(32位) 为例,讲解如何将十进制数 15.945 转换为其 IEEE 754 表示。
IEEE 754 单精度格式
符号位(S):1 位,0 表示正数,1 表示负数。
指数位(E):8 位,采用偏移量(bias)127存储,即存储值 = 实际指数 +127。
尾数位(M):23 位,存储的是规格化数的小数部分(隐含整数部分为 1)。
所以一个规格化单精度浮点数的实际值为:

计算过程
首先,我们需要将 15.945 转换为二进制形式(整数部分和小数部分分别转换)。
1.整数:
15÷2=7 余1
7÷2=3 余1
3÷2=1 余1
1÷2=0 余1(从下往上读1111)
2.小数:采用"乘 2 取整"法,顺序读取整数位:
0.945 × 2 = 1.89 → 取整数 1,剩下 0.89 (bit1)
0.89 × 2 = 1.78 → 1 (bit2)
0.78 × 2 = 1.56 → 1 (bit3)
0.56 × 2 = 1.12 → 1 (bit4)
0.12 × 2 = 0.24 → 0 (bit5)
0.24 × 2 = 0.48 → 0 (bit6)
0.48 × 2 = 0.96 → 0 (bit7)
0.96 × 2 = 1.92 →1 (bit8)
0.92 × 2 = 1.84 →1 (bit9)
0.84 × 2 = 1.68 →1 (bit10)
0.68 × 2 = 1.36 →1 (bit11)
0.36 × 2 = 0.72 →0 (bit12)
0.72 × 2 = 1.44 → 1 (bit13)
0.44 × 2 = 0.88 → 0 (bit14)
0.88 × 2 = 1.76 → 1 (bit15)
0.76 × 2 = 1.52 → 1 (bit16)
0.52 × 2 = 1.04 → 1 (bit17)
0.04 × 2 = 0.08 → 0 (bit18)
0.08 × 2 = 0.16 → 0 (bit19)
0.16 × 2 = 0.32 → 0 (bit20)
0.32 × 2 = 0.64 → 0 (bit21)
0.64 × 2 = 1.28 → 1 (bit22)
0.28 × 2 = 0.56 → 0 (bit23)
所以 0.945 的二进制小数(前 24 位)为:
bash
1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0(从上到下)
3.合并在一起就是
bash
1 1 1 1 .1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0)(整数部分范围是1到2,所以小数点左移3位,小数部分取23位)所以指数是3
1.1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0
4.组成32位(1位符号位+8位指数位+23位尾数)
bash
0 10000010 11111110001111010111000
5.数据拆分
bash
0100 0001 0111 1111 0001 1110 1011 1000
4 1 7 8 1 E B 8
所以32位数为 0x417F1EB8