计算机内存中浮点数的表示

浮点概念的引入

在计算机系统的发展过程中,曾经提出过多种方法表达实数。比如定点数表示法, 这种表示方法将小数点的位置固定在某一个位置,比如: 11001000.00110001,这个16位(2字节) 的定点数用前面8位表示整数部分,后面8位表示小数部分,这种方法直观,但是固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。最终,绝大多数现代计算机遵循IEEE754,即IEEE二进制浮点数算数标准,利用科学计数法来表达实数,即用一个尾数(Mantissa or significand),一个基数(Base),一个指数(Exponent)以及一个表示正负的符号来表达实数。比如 123.45 用十进制科学计数法可以表达为 1.2345 × 10^2 ,其中1.2345 为尾数,10 为基数,2为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。


浮点数在内存中的格式

IEEE 754标准定义了五种浮点数格式,使用基数和该格式占用的内存比特数命名,五种格式分别为:

  1. 二进制32位浮点数 (binary32)
  2. 二进制64位浮点数 (binary64)
  3. 二进制 128位浮点数(binary128)
  4. 十进制64位浮点数(decimal64)
  5. 十进制128位浮点数(decimal128)

各种编程语言和编译器一般都支持前两种格式,分别对应于float和double,对于后一种二进制高双精度128位浮点数,一般编译器使用80位表示,也有极个别的编译器将他们视为128位。

在IEEE标准中,浮点数在内存中的表示是将特定长度的连续字节的所有二进制位按特定长度划分为符号域,指数域和尾数域三个连续域。 例如,对于float类型的数据,其在内存中的表示为:

这里写图片描述

对于double类型,其表示形式如下:

这里写图片描述

从上面可以看出,float类型在内存中占用的位数为: 1+8+23=32bits

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值