float数内存格式

float 数据结构

float4个字节的数据结构,32bit位的数据结构。数据的二进制结构分为三个部分:

              符号部分、指数部分、底数部分。如下图所示:

 

 

符号位:0为正数,1为负数。

指数部分:因为是8为二进制位,为了表示负指数的情况,就对这8位进行了特殊的处理。将指数减去127,再转化为二进制填入这8位,用来存储。

底数部分:底数部分有23位表示,因为省略了开始的1.xxxx。任何一个二进制都可以表示成

1.xxxxxx为底数的格式。所以存储时候,就可以省略所有底数的共同部分:1.。于是float的二进制只存储了小数点后的部分。

举例说明:(依然是万恶的-12.5

格式           SEEEEEEE      EMMMMMMM      MMMMMMMM         MMMMMMMM

二进制       11000001      01001000        00000000         00000000

16进制                    C1                        48                              00                            00

S 位(符号位)为1,表示这是个负数。

E位(指数位)为10000010 = 130130-127=3,指数位为3.

M位(底数位)为1001000    00000000   00000000.加上前面省略的1.应该是:

1.1001000  00000000  00000000   加上指数因素后:

1100.1000  00000000  00000000,转换为10进制:

=  8 + 4 + 0 + 0 + 0.5 + 0 = 12.5  加上符号即为  -12.5

例子2123.25

格式           SEEEEEEE      EMMMMMMM      MMMMMMMM         MMMMMMMM

二进制       01000010          11110110         10000000        00000000

16进制                      42                             F6                              80                          00

S 位(符号位)为0,表示这是个正数。

E位(指数位)为10000101= 133133-127=6,指数位为6.

M位(底数位)为1110110    10000000   00000000.加上前面省略的1.应该是:

1.1110110  10000000  00000000   加上指数因素后:

1111011.0100  00000000  00000000,转换为10进制:

=  64 + 32 + 16 + 8 + 0 + 2 + 1 + 0*0.5 + 1*0.25 + 0 = 123.25  加上符号即为  123.25

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值