什么是IEEE754单精度浮点数
IEEE 754单精度浮点数格式使用32位二进制表示,其中1位用于符号位,8位用于指数,23位用于尾数。
以下是IEEE 754单精度浮点数的详细格式:
S | Exp | Frac |
---|---|---|
1 | 8 bits | 23 bits |
其中,S表示符号位,Exp表示指数,Frac表示尾数。
-
符号位(S):用于表示浮点数的正负性。当S为0时,表示为正数;当S为1时,表示为负数。
-
指数位(Exp):用于表示浮点数的大小范围。在IEEE 754标准中,指数采用“移码表示”(Excess-K表示),即实际指数值为指数值减去一个固定偏移量K。对于单精度浮点数,指数偏移量为2的7次方-1=127。因此,指数位的取值范围为-126~127。
-
尾数(Frac):用于表示浮点数的精度。在IEEE 754标准中,尾数采用隐式“1”表示法,即在尾数的最高位上总是隐含一个“1”,因此尾数的范围为1到2(不包括2),可以表示的最小精度为2的-23次方。
通过这些二进制位的组合,单精度浮点数可以表示的实数范围为约±3.4×10^38,
可以表示的最小正数为约2.2×10^-23。
IEEE754单精度浮点数转十进制格式
例题:
若浮点数 x 的 IEEE754 标准存储格式为(41360000)16,求其浮点数的十进制数值。
- 将16进制的格式转化为二进制的格式的数字
(41360000)16
(0100 0001 0011 0110 0000 0000 0000 0000)2
首位
是S(f符号位),次八位
-127是E(阶数),剩余23位是M(尾数)
S=0
E=(100 0001 0)2-(127)10
=130-127
=3
//计算得出阶数E=3
- x=(–1)S×(1.M)×2E
S=0
E=3
M=011 0110 0000 0000 0000 0000
//计算
x=(–1)^S×(1.M)×2^E
=1×1.011011×8
=1011.011
//结果转化为十进制
(11.375)10
十进制转IEEE754单精度浮点数格式
例题:
将263.25转化为单精度浮点数格式。
- 求S:正数S=0,负数S=1;
- 求E:十进制数转化为二进制数,然后将其变成1.M格式,需要将小数点移动N位,E=127+N
//将其转化为二进制的格式
(263.25)10=(100000111.01)2
//将小数点移动,使得成为1.M的格式
1.0000011101(小数点向左移动了八位)
//得到E的值
E=127+8=135
//二进制形式
10000111
- 将1.M的格式的小数位作为M的值,如果不够23位,后面补零
M=0000011101
//所以最终答案是:S E M
0 1000 0111 0000 0111 0100 0000 0000 000