浮点数的存储形式

在OJ(在线判题系统)的题目中偶尔会出现浮点数这一数据类型,对该类型的理解是刷这类题必须要经历的历程。

对于浮点数,百度对其解释为:

用白话讲,就是小数的意思。

整型在内存中的存储很好理解,但浮点数就稍微复杂了那么一点点。

根据国际IEEE(电气电子工程师学会)754标准,在内存中任意一个二进制浮点数有以下形式:

(-1)^S 表示符号位,即浮点数为正还是为负用此表达。

M 是介于 1 ~ 2 的有效数字,以 1 . xxxxx 表示。

2^E 表示指数位,可以理解为多少位数。

而V则表示浮点数啦。

对于十进制的 10 ,用二进制可表示为 1010.0 ,由此可得其存储形式S应该为偶数,这样才表示其为正数;M为1.01,取其最前端(最左边)的那个 1 做1.xxx,后面各个位数为小数部分;而E则为3,因为最前端的1和小数点差三位数。

那么就有:V = (-1)^0*1.01*2^3

再比如十进制的-45.5,用二进制表示为101101.1,S应为奇数表示其为负数;M为1.011011,小数点后的1也要考虑进去;E则为5。

也就是:V = (-1_{})^1*1.011011*2^5

对于32位的浮点数,内存分配为:

首位即为符号位S,1~9位为指数位E,剩余23位为有效数字位。

实际上M为24位,因为其1.xxx中数值1是固定的,只要在计算的时候加上即可,这样的话存储数值1的那位就可以空出来,所有M应该是23+1位也就是24位。

对于64位浮点数,内存分配为:

S 1 位,E 11 位,M为剩余 52 位(实际53)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值