1、float 浮点数
在IEEE-754标准中float定义格式为:
|------|------------|---------------------------------------|
|符号| --阶码—|------------尾数---------------------|
符号表示正负:0为正,1为负;
阶码表示基的指数,因为是二进制,因此基是2,表示为2^n,阶数需要转换时需要±127
尾数表示小数点后面的数,需要由二进制转换成小数点后的数
在实际的物理存储中又分为如下长度:
s(符号)E(阶码)M(尾数)32bit1bit8bit23bit64bit1bit11bit52bit
二进制转float公式为:
1.
M
∗
2
E
−
127
=
f
l
o
a
t
1.M*2^{E-127}=float
1.M∗2E−127=float
1.(尾数)*2^(阶码-127) = (十进制)浮点数
2、举例
例1:-12.5转换为float二进制表示
- 整数部分12,二进制:1100,
- 小数部分0.5,二进制:.1
将这两部分合起来为1100.1。
由于阶数为2,因此需要将(1100.1)左移3位改为(1.1001*2^3),其中3位指数,.1001为尾数;
阶数需要指数加上偏移量127,因此阶数为130(3+127),二进制为(10000010);
由于是负数,因此符号位为1;
(-12.5)=(1 10000010 10010000000000000000000 )
例2:(0 01111101 10011001100110011001101)转换为十进制
符号位为0,是整数;
阶码为(01111101)= 125,需要减去偏移量127;(125-127)= -2
尾数为:(.10011001100110011001101)=.0.600006103515625
小数点二进制转换为十进制:
2^(-1) + 2^(-4)+ 2^(-5) + 2^(-8) + 2^(-9) + 2^(-12) + 2^(-13) + 2^(-15) = .0.600006103515625
尾数的小数点前默认为1,即1.尾数
于是:1.600006103515625*2^(-2) = 0.4000000059604644775390625 = 0.4000
版权归原作者 卡卡小旋风 所有, 如有侵权,请联系我们删除。