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

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,即左加右减.这

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值