浮点数与双进度浮点数的存储

本文详细介绍了单精度和双精度浮点数的二进制表示方法,涉及正负号、小数点位、科学计数法的运用,以及在内存中的存储结构,包括大端和小端字节序列的区别。
摘要由CSDN通过智能技术生成

 一、引言

上期我们讲到数据的存储,那很多同学就对单精度浮点数与双精度浮点数有疑问了,正负号用最前头的二进制位充当符号位,那单精度浮点数和双精度浮点数又是哪一位二进制位充当充当小数点位又是如何通过二进制存储小数以及为什么单精度浮点数和双精度浮点数存储时内存数据会发生部分丢失。首先我们书接上回大小端,大小端分为大端字节序列、小端字节序列。

大端字节序列:将数据高位字节存储到低位字节,将数据低位字节存储到低位字节。

小端字节序列:将数据高位字节存储到高位字节,将数据低位字节存储到低位字节。

众所周知,变量的内存的地址是由高到低的 ,数组则恰恰相反,内存的地址是由低到高的。

通俗一点来讲就是字节顺序顺反的处理方式。

二、单精度浮点数与双进度浮点数在通过二进制表示

同学们可以自己结合自己编译器调试功能的内存来查看。同学们肯定都使用过科学计数法使数据的表达更加简洁明了。单精度浮点数和双精度浮点数就是以科学计数法方式存储单精度浮点数和双精度浮点数。我们用科学计数法表示十进制数字时,表示形式为:a X 10^n(0<a<10)。那我们推而广之,单精度浮点数和双精度浮点数的二进制表示形式为:a X 2^n (0<a<2)。

三、单精度浮点数与双精度浮点数在内存中的存储方式

单精度浮点数与双精度浮点数在内存中二进制中存储:

存储形式:V=(-1)^S X 2^E X M(为了方便大家看得懂所以John将2^E与M调换)

为了方便保存E会加上中间值一般单精度浮点数(float)加上127,double(双精度浮点数)会加上1023,毕竟E为负数,没有加上中间值就不好表示,中间值为E的最大值除以二。

在计算机内存二进制里表示形式为:

第一位二进制位表示正负号(对应上述的S)

第二位二进制位到第九位二进制位表示二进制的权重(对应上述的E)

第十位二进制位到第三十二位二进制表示二进制位经过科学计数法的第一操作数(对应上述的M)

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值