IEEE754单精度浮点数与十进制相互转化

什么是IEEE754单精度浮点数

IEEE 754单精度浮点数格式使用32位二进制表示,其中1位用于符号位,8位用于指数,23位用于尾数。

以下是IEEE 754单精度浮点数的详细格式:

S Exp Frac
1 8 bits 23 bits

其中,S表示符号位,Exp表示指数,Frac表示尾数。

  1. 符号位(S):用于表示浮点数的正负性。当S为0时,表示为正数;当S为1时,表示为负数。

  2. 指数位(Exp):用于表示浮点数的大小范围。在IEEE 754标准中,指数采用“移码表示”(Excess-K表示),即实际指数值为指数值减去一个固定偏移量K。对于单精度浮点数,指数偏移量为2的7次方-1=127。因此,指数位的取值范围为-126~127。

  3. 尾数(Frac):用于表示浮点数的精度。在IEEE 754标准中,尾数采用隐式“1”表示法,即在尾数的最高位上总是隐含一个“1”,因此尾数的范围为1到2(不包括2),可以表示的最小精度为2的-23次方。
    通过这些二进制位的组合,单精度浮点数可以表示的实数范围为约±3.4×10^38,
    可以表示的最小正数为约2.2×10^-23。

IEEE754单精度浮点数转十进制格式

例题:
若浮点数 x 的 IEEE754 标准存储格式为(41360000)16,求其浮点数的十进制数值。

  1. 将16进制的格式转化为二进制的格式的数字
(41360000)16
(0100 0001 0011 0110 0000 0000 0000 0000)2
  1. 首位是S(f符号位),次八位-127是E(阶数),剩余23位是M(尾数)
S=0
E=(100 0001 0)2-(127)10
 =130-127
 =3
//计算得出阶数E=3
  1. x=(–1)S×(1.M)×2E
S=0
E=3
M=011 0110 0000 0000 0000 0000
//计算
x=(1)^(1.M)×2^E
 =1×1.011011×8
 =1011.011
//结果转化为十进制
 (11.375)10

十进制转IEEE754单精度浮点数格式

例题:
将263.25转化为单精度浮点数格式。

  1. 求S:正数S=0,负数S=1;
  2. 求E:十进制数转化为二进制数,然后将其变成1.M格式,需要将小数点移动N位,E=127+N
//将其转化为二进制的格式
(263.25)10=(100000111.01)2
//将小数点移动,使得成为1.M的格式
1.0000011101(小数点向左移动了八位)
//得到E的值
E=127+8=135
//二进制形式
10000111
  1. 将1.M的格式的小数位作为M的值,如果不够23位,后面补零
M=0000011101
//所以最终答案是:S E M
0 1000 0111 0000 0111 0100 0000 0000 000

猜你喜欢

转载自blog.csdn.net/m0_58121644/article/details/130057445
今日推荐