IEEE浮点数

本文详细介绍了浮点数(float和double)的基本概念及其与二进制之间的转换方法,包括符号位、指数和尾数的具体含义及计算方式。

浮点数分float和double,分别为32位和64位。
重点:浮点数与二进制的转换

         符号位   指数  尾数  长度
float       1       8     23     32
double      1      11     52     64

基本上float和double的转换二进制数的方法大同小异
这里只拿float来做转换

     0 | 000 0000 0 | 000 0000 0000 0000 0000 0000
符号位    指数位      尾数位

例:
41 5E 00 00 => 13.875f
=> 0100 0001 0101 1110 0000 0000
=> 0|100 0001 0|101 1110 0000 0000
符号位为0,是正数,指数等于100 0001 0 - 127 => 130 - 127 => 3
那么指数位结合尾数位
1.101111 * 2e3 => 1101.111 => 13.875f
注 为什么101 1110 0000 0000得到1.101111?
可以从下面的例子看出实数部分的1可以省去,需要从二进制转换成浮点数时,
再加上计算即可。


小数转换二进制方法
0.875                    0.125
    2                        2
-----                    -----
1.750  1                 0.250  0
0.750                        2
    2                    -----
-----                    0.500  0
 1.50  1                     2
 0.50                    -----
    2                    1.000     =>  0.001
-----
 1.00    => 0.111

float i = 13.875f; => 转换二进制
拆分    13 => 1101        组合  1101.111 => 1.101111 * 2e3
      0.875 => 0.111

符号位0,指数位127+3 => 100 0001 0,
尾数位省略实数的1 => 101 1110 0000 0000
综合 => 0100 0001 0101 1110 0000 0000 => 41 5E 00 00

float i = -0.125f; => 转换二进制
拆分   0   => 0           组合   0.001  =>   1.000 * 2e-3
     0.125 => 0.001
符号位1,指数位127-3 => 011 1110 0,
尾数为省略实数的1 => 000 0000 0000 0000
综合 => 1011 1110 0000 0000 0000 0000 => BE 00 00 00

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值