浮点的表示方法


单精度名称本身的含义是“单字长精确的程度”。跟什么32位、64位有没有关系, 取决于系统支持的字长(word)是几个字节(byte)

一、浮点的表示方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、单精度类型(float)

所占的内存不同
单精度浮点数占用4个字节(32位)存储空间来存储一个浮点数,包括符号位1位,阶码8位,尾数23位。
Sign:符号位,1 bit,0为正,1为负;
Exponent(bias):指数部分,8 bits,存储格式为移码存储(后面还会说明),偏移量为127;
Mantissa(fraction):尾数部分。
数值范围
单精度浮点数的数值范围为-3.4E38~3.4E38。E表示10的多少次方,如3.4E38指的是3.4乘以10的38次方。
十进制下的位数不同
单精度浮点数最多有7位十进制有效数字,如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例4.25在计算机硬盘中存储的状态,请跟我来:首先把4.25转换成二进制的表达方式,即100.01,在详细点,变成1.0001x2^2。好了,对号入座把。
Sign=0;
Exponent(bias)=2+127=129 (偏移量为127,就是直接加上个127了);
Mantissa=1.0001-1.0=0001(规格化后,小数点前总是整数1,全世界人都知道前面是1不是0,所以省略不写了,即尾数部分不包括整数部分;当别人问你,为什么23 bit的尾数部分可以表示24位的精度,知道怎么回答了吧。

例:8.25,二进制的科学计数法表示:1.00012^3
在这里插入图片描述
例:118.5,二进制的科学计数法表示:111 0110.1=1.1101101
2^6
在这里插入图片描述

二、双精度类型(double)

所占的内存不同
双精度浮点数使用 8个字节(64位)存储空间来存储一个浮点数,包括符号位1位,阶码11位,尾数52位。
数值范围
双精度浮点数可以表示的数字的绝对值范围大约是:-2.23E308 ~ 1.79E308。E表示10的多少次方,如3.4E38指的是3.4乘以10的38次方。-1.79E+308 ~ +1.79E+308
十进制下的位数不同
双精度浮点数可以表示十进制的15或16位有效数字,超出的部分也会自动四舍五入。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例:118.5,二进制的科学计数法表示:111 0110.1=1.1101101*2^6
在这里插入图片描述

三、IEEE 754标准

不论是float还是double在存储方式上都是遵从IEEE的规范(IEEE floating point standard)的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。IEEE 标准如下:
在这里插入图片描述
按照IEEE 标准,常用的浮点数有三种:
在这里插入图片描述
S为数符,表示浮点数的正负,但与其有效位(尾数)是分开的。
阶码用移码表示,阶码的真值都被加上一个常数(偏移量),如短实数、长实数和临时实数的偏移量分别为127、1023和16383。
在这里插入图片描述
尾数部分通常都是规格化表示,即非“0”的有效位最高位总是“1”,但在IEEE 标准中,有效位呈现如下形式:
在这里插入图片描述
其中1后面的为假想的二进制小数点。对短实数和长实数,这个整数位的1省略,称为隐藏位;对于临时实数不采用隐藏位方案。
取值范围取决于指数位(阶码),计算精度取决于小数位(尾数)。小数位越多(比如双精度是52位),则能表示的数越大,那么计算精度则越高。
举例说明178.125的实数表示:
在这里插入图片描述
IEEE 754浮点数标准详解http://c.biancheng.net/view/314.html.

  • 20
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值