浮点数的二进制表示

浮点数的内存结构


根据IEEE的标准,浮点数的定义如下

符号位指数位小数部分指数偏移量
单精度浮点数1 位[31]8位 [30-23]23位 [22-00]127
双精度浮点数1 位[63]11 位[62-52]52 位[51-00]1023

我们以单精度浮点数0.5来说明:

二进制表示: 0011 1111 | 0000 0000 | 0000 0000 | 0000 0000 

十六进制表示:0x3f000000

符号位:0,表示为正数

指数位 :126-127=-1

二进制为01111110 十六进制为0x7e 十进制为126

科学计数法中的E是可以出现负数的,所以IEEE 754规定,E的真实值必须再减去一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。

指数E的计算方式分三种情况:

1)E不全为0或不全为1。则指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。
2)E全为0。这时,浮点数的指数E等于1-127(或者1-1023),有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。
3)E全为1。这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);如果有效数字M不全为0,表示这个数不是一个数(NaN)。

小数部分:由于指数部分既不是全为1,也不是全为0,所以 有效数字部分前要加1,变为1.0

结果:1.0乘以2的-1次方为0.5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值