浮点数转换为十进制

本文介绍32位单精度浮点数的二进制表示方法,包括符号位、指数位及尾数的构成。并详细解释了从十进制到二进制的转换步骤,如改写为二进制、规格化和填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2015-11-25

浮点数二进制表达的三个组成部分 14.45*10^3,只不过这里是以2为底数

浮点数是科学计数法,在二进制中类似于

符号位 指数位 尾数

S        E        M


32位单精度浮点数 三部分的位数分别为  

而64位双精度浮点数,指数部分为11位,尾数为52位。

三个部分的组成

  • Sign(1bit):表示浮点数是正数还是负数。0表示正数,1表示负数
  • Exponent(8bits):指数部分。类似于科学技术法中的M*10^N中的N,只不过这里是以2为底数而不是10。需要注意的是,这部分中是以2^7-1127,也即01111111代表2^0,转换时需要根据127作偏移调整。
  • Mantissa(23bits):基数部分。浮点数具体数值的实际表示。

转换过程

1.改写为二进制

  整数部分,和小数部分分别改写,以5.2为例,整数部分为101,小数部分0.2 = 0.125+0.0625+0.007825+0.003906252^-3+2^-4+2^-7+2^-8.... ,也就是                                    .00110011001100110011    

2.规格化

调整小数点,向右移或者向左移,保证小数点前面只有一个bit,且保证小数点前只为1,

规格化后为  1.0100110011001100110011* 2^2


3. 填充

指数部分是以127为偏移量的,相当于十进制中的0,将规格化后的指数部分加上127,就是浮点数的指数部分,129=10000001

注意,整数部分的1要舍去,因为在规格化后小数点前必然会有个1。

之后可以将该数转换为十六进制或者其他进制。

同样的,将一个二进制的浮点数转变成十进制,就是上述的逆过程,但要注意,去除符号位和指数后,将小数点偏移指数位减去127,再将剩下的二进制小数,转成十进制

 

 

附上一个浮点数转换工具:

http://www.h-schmidt.net/FloatConverter/IEEE754.html

转载于:https://www.cnblogs.com/moon-lights/p/4994698.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值