2014.12.26浮点数的存储方式

本文详细解析了浮点数的存储方式,包括float、double和longdouble的结构,以及如何将十进制浮点数转换为二进制形式。通过实例展示了具体的转换过程。

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

<h4>浮点数的存储方式</h4> <p>浮点数的存储方式都是分成三段 </p> <ul> <ul> <li>符号位 一个位&#160; 1指负 0指正 </li> <li>指数位 </li> <li>尾数位 </li> </ul> </ul> <p>科学计数法: 2.55E7&#160;&#160; 2.55是尾数 E后面的7是指数</p> <p>float 单精度浮点数占4个字节 共32位&#160;&#160; </p> <ul> <ul> <li>符号位: 1</li> <li>指数位: 8</li> <li>尾数位: 23</li> </ul> </ul> <p>&#160;</p> <p> double 双精度浮点数占8个字节 共64位</p> <ul> <ul> <li>符号位:1</li> <li>指数位:11</li> <li>尾数位:52</li> </ul> </ul> <p>&#160;</p> <p>long double 长双精度浮点数占16个字节 共128位</p> <ul> <ul> <li>符号位:1</li> <li>指数位:64</li> <li>尾数位:63</li> </ul> </ul> <h4>&#160;</h4> <h4>&#160;</h4> <h4>十进制浮点数转换成二进制浮点数</h4> <blockquote> <p>如 20.5 先转换整数部分 然后浮点数部分 </p> <p>用小数去乘以2 然后剩余的结果减去整数部分继续乘2 直到一直结果为0或者循环</p> <p> 例1:计算&#160; 20.5的二进制&#160; </p> <p>20 = 10100 (二进制) 然后小数部分0.5</p> <p>0.5 * 2 = 1.0&#160; (1)</p> <p>去除整数部分1 剩 0 不用计算了 所以小数部分是 1</p> <p>20.5 = 10100.1(二进制) = 1.01001E100 (转成二进制科学计数法,这里的E不是10了是2)</p> <p>最后 我们来转成float类型存储的二进制</p> <p>(符号位) – (指数位+127) – (尾数位)</p> <p>(0) – (00000100 + 01111111 = 10000011 ) –(01001000000000000000000)</p> <p>关于指数位计算采用移位存储 float类型+127&#160; double+1023 </p> <p>所有最终存储结果是</p> <p>20.5 = 0-10000011-01001000000000000000000</p> <p>&#160;</p> <p>例2: 计算20.3的二进制</p> <p>20 = 10100(二进制)</p> <p>0.3&#160; * 2 = 0.6 (0)</p> <p>0.6 * 2 = 1.2&#160; (1)</p> <p>0.2 * 2 = 0.4&#160; (0)</p> <p>0.4 * 2 = 0.8 (0)</p> <p>0.8 * 2 = 1.6 (1) </p> <p>0.6 * 2 = 1.2 (1)&#160; ----到这步就开始循环了 </p> <p>所以小数部分是 0.010011001….1001 </p> <p>20.3 = 10100.010011001….1001(二进制) = 1.0100010011001E101</p> <p>(符号位) – (指数位+127) – (尾数位)</p> <p>(0) – (00000101 + 01111111 = 10000100) –(010011001….1001)</p> <p> 最重存储结果是</p> <p>0-10000100-01001100110011001100110</p></blockquote>

转载于:https://my.oschina.net/u/2297730/blog/361069

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值