浮点数的存储方式

本文详细介绍了浮点数在计算机中的存储方式,包括定点和浮点实数存储的区别,重点讨论了浮点数(如float和double)的二进制表示和精度缺失问题。通过实例展示了浮点数转换为二进制的过程,解释了为什么浮点数不适合精确比较,并分析了精度丢失的原因。同时,提到了double类型的存储结构和特点。
摘要由CSDN通过智能技术生成

目录

一、浮点数存储方式分类

二、浮点实数存储方式

2.1 如何把浮点数转为二进制数

 2.2 为什么浮点数存在精度问题

三、double类型如何存储


为什么浮点数不适合比较大小和比较相等的操作?原先只听说跟浮点数的精度有关,浮点数为什么会有精度缺失问题?需要看一下浮点数在计算机中如何存储。

一、浮点数存储方式分类

在计算机发展过程中,出现了两类存储方式,分别是定点实数存储和浮点实数存储方式:

1、定点实数存储方式:约定整数位和小数位的存储长度,比如高两位放整数位,低两位存放小数位。

优点是方便计算;缺点是存储的数据范围有限;

2、浮点实数存储方式:用一部分二进制位存放小数点位置,称为“指数域”,其他全部用来存储没有小数点时的数据和符号,称为“数据位”、“符号域”。

优点是存储的数据范围更大;缺点是计算比定点实数存储慢些;

80286出现后,有了浮点协处理器,计算实数的效率提升了,浮点实数存储方式得到普及

C语言中的浮点数使用IEEE 754标准来进行存储。IEEE 754标准规定了浮点数的表示方法,包括浮点数的符号位、指数位和尾数位。 在C语言中,浮点数使用float和double两种数据类型进行表示。float类型占用4个字节,double类型占用8个字节。 浮点数存储方式可以分为三个部分: 1. 符号位(Sign):浮点数的符号位用一个bit来表示,0表示正数,1表示负数。 2. 指数位(Exponent):浮点数的指数位用一定的位数来表示。在float类型中,指数位占用8个bits,而在double类型中,指数位占用11个bits。指数位的值通过偏移码来表示,偏移码是指将真实的指数值加上一个偏置值,这个偏置值在float和double类型中分别是127和1023。指数位的值表示了浮点数的数量级。 3. 尾数位(Significand or Mantissa):浮点数的尾数位用一定的位数来表示。在float类型中,尾数位占用23个bits,而在double类型中,尾数位占用52个bits。尾数位的值表示了浮点数的精度和小数部分。 浮点数的实际值可以通过以下公式计算得到:实际值 = (-1)^符号位 × (1 + 尾数位) × 2^(指数位 - 偏置值)。 浮点数存储方式使得它可以表示非常大和非常小的数,并且具有一定的精度。然而,由于浮点数存储方式以及精度问题,对于一些比较精确的计算,可能需要使用其他更为精确的数据类型或者进行一些特殊的处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值