c++中浮点数的存储方式

本文探讨了C++中浮点数如float的存储方式,包括符号位、阶码和尾码的概念,并通过12.25的例子详细解释了如何在内存中表示浮点数,以及如何通过左加右减的方式来确定小数点移动的方向。同时,提到了存储过程中可能出现的误差,指出浮点数是一种近似存储方式。

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

c++中浮点数的存储方式

最近闲来无事,一直搞不懂float类型在内存中是怎么存储的,于是潜心研究了一下,以下是一些心得:


开始之前,先简单的说一下float的四字节32位二进制分别代表的意义:

1:符号位 0正1负

2->9:阶码 0111 1111

10->32:尾码 其实就是小数点移动后,去掉左边1剩余的数(这儿可能说的不是很清晰,后面我会举例说明,很容易理解的)

以上三个名字其实不重要,理解它们所代表的含义即可,下面开始正题:


我这儿以12.25为例说明浮点数在内存中的存储方式

1.首先将12.25转换为二进制12.25->1100.01(其余各位用0填充,这儿为了清晰起见,就省略了)

2.移动小数点,例如12.25移动后为1.10001,去掉小数点左边的1,剩余的即为伪码.但是这儿由出现了一个新的问题,我们怎么区分小数点的左移和右移呢,编译器在这儿采用了一个非常巧妙的方法,利用127进行区分,如果小数点向左移动,就加上127,向右移动就减去127,即左加右减.这

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值