浮点数在计算机中的二进制表示(IEEE 754 标准)

十进制,二进制转换相关知识参考:

http://www.cnblogs.com/xkfz007/articles/2590472.html

原码,反码,补码,移码相关知识参考:

https://blog.csdn.net/xdd19910505/article/details/40424533

 

想知道浮点数在计算机中的二进制表示,先让我们了解一下浮点数是怎么用十进制表示的。

浮点数的十进制表示一般使用的是科学计数法。

科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤a<10,n为整数),这种记数法叫做科学记数法。

如:

1234.5 = 1.2345\times 10\times 10\times 10=1.2345 \times 10^{3}

当然上面使用的都是十进制的科学计数法,而在计算机中使用的是二进制的科学计算法。

上面的等式转换为二进制表示如下:

10011010010.1 = 1.00110100101 \times 2^{10}

好了,现在大家知道浮点数是怎么用二进制科学计数法表示的了,下面我们再来看看浮点数在计算机中的二进制表示。

我们先来看张图:

如图所示,即浮点数在计算机内的 IEEE 754 标准小端序的数据存储格式,可以分为三部分——数符,阶码和尾数。

各部分占位如下:

 S(数符)E(阶码)M(尾数)总长
float182332
double1115264

数符,阶码和尾数具体是什么呢?我们再来看张图:

上面的公式就是浮点数的真值公式,我们来对应之前的数据存储格式(数符,阶码和尾数)解释一下:

S(数符):表示浮点数的正负,0为正,1为负。

M(尾数):表示转换到标准二进制科学计数法后的小数部分。因为转换为标准计数法后整数部分永远是1,所以可以省略。

E(阶码):表示处理过的二进制科学计数法的幂次方。这里e代表原幂次方,E(阶码)在这里的处理是:

E=e+2^{n-1} -1  (n为阶码的位数)

即:

float:E = e + 127

double:E = e + 1023

还是拿上面的例子来说(使用单精度浮点数 float):

1.00110100101 \times 2^{10} = (-1)^{​{\color{Red} 0}} \times(1.{\color{Red} 00110100101}) \times 2^{​{\color{Red} 137}-127}

所以:

S = 0

E = e + 127 = 10 + 127 = 137 = 10001001 

M = 00110100101000000000000  (后面补 0 凑够 23 位)

将 S、E、M 拼起来即为 1234.5 在计算机中的二进制表示 01000100  10011010  01010000  00000000。

至此,我们就了解了浮点数在计算机中的二进制表示。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值