单双精度浮点数的IEEE标准格式

   目前大多数高级语言(包括C)都按照IEEE-754标准来规定浮点数的存储格式,IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用8字节 存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位,符号位1位,双精度则为11为阶,53位尾数 和1位符号位,如下图所示:

 

单精度浮点数存储格式

 s指数  尾数

                                              31    | 30                          23 |  22                           0

                                      符号位1bit             阶数8bits                       尾数23bits(规格化后可以表示24bits)

 

双精度浮点数存储格式
 s 指数尾数 

                                             63     |  62                         52 | 51                             0

                                      符号位1bit             阶数11bits                     尾数52bits(规格化后可以表示53bits)

 


        细心的人会发现,单双精度各部分所占字节数量比实际存储格式都了一位,的确是这样,事实是,尾数部分包括了一位隐藏位,允许只存储23位就可以表示24位 尾数,默认的1位是规格化浮点数的第一位,当规格化一个浮点数时,总是调整它使其值大于等于1而小于2,亦即个位总是为1。例如1100B,对其规格化的 结果为1.1乘以2的三次方,但个位1并不存储在23位尾数部分内,这个1是默认位。

        阶以移码的形式存储。对于单精度浮点数,偏移量为127(7FH),而双精度的偏移量为1023(3FFH)。存储浮点数的阶码之前,偏移量要先加到阶码 上。前面例子中,阶为2的三次方,在单精度浮点数中,移码后的结果为127+3即130(82H),双精度为1026(402H)。

        浮点数有两个例外。数0.0存储为全零。无限大数的阶码存储为全1,尾数部分全零。符号位指示正无穷或者负无穷。

下面举几个例子:

单精度浮点数
 十进制规格化符号移阶码尾数                  
 -12-1.1x23  1100000101000000  00000000  00000000 
 0.251.0x2-2  0011111010000000  00000000  00000000 

 所有字节在内存中的排列顺序,intel的cpu按little endian顺序,motorola的cpu按big endian顺序排列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值