定点数和浮点数的详细介绍(一)定义、范围、位宽

1.定点数

1.1定点数描述

定点数包括定点小数(纯小数)、定点整数(纯整数)、整数和小数位数固定的实数。

1.2定点小数:

小数点默认在符号位后面,首位为符号位,其他为数值位(在用二进制代表小数时,例如0xFF,就表示0.5+0.25+0.125+0.0625+0.03125........)

例如,用一位符号位、三位小数位,表示以下数据:(小数点省略就是B)

原码

十进制正小数

十进制负小数

原码

补码

0.000

0

0

1.000

1.000

0.001

0.125

-0.125

1.001

1.111

0.010

0.25

-0.25

1.010

1.110

0.011

0.375

-0.375

1.011

1.101

0.100

0.5

-0.5

1.100

1.100

0.101

0.625

-0.625

1.101

1.011

0.110

0.75

-0.75

1.110

1.010

0.111

0.875

-0.875

1.111

1.001

负数使用补码,就可以直接进行运算。比如:

0.125+(-0.875)=0.001+1.001=1010(-0.75)

0.750+(-0.375)=0.110+1.101=1 0011(0.375)

0.250+(-0.250)=0.010+1.110=1 0000(0)

1.3定点整数:

就跟整数的二进制写法一样

1.4整数和小数位数固定的实数:

其中,W为总位宽,也就是阶码的位宽;Wf为小数部分位宽。例如,用一位符号位、一位正数部分、2位小数部分,表示以下数据:(小数点省略就是B)

原码

十进制正小数

十进制负小数

原码

补码

00.00

### 定点数浮点数的精度比较 定点数的小数点置固定,因此其表示范围有限,在给定相同的情况下,能够表达的有效数值间隔较大。对于32有符号定点小数而言,虽然可以精确到定程度内的分数部分,但对于非常大或者非常接近零的数值则无法提供足够的分辨率[^4]。 相比之下,浮点数采用科学计数法的形式存储数据,由符号、指数域以及尾数域组成。这样的结构允许浮点数拥有更大的动态范围更高的相对精度。当处理极大或极小的数据时,浮点数的优势尤为明显;然而,在某些特定区间内,尤其是靠近0附近的时候,由于舍入误差的存在,可能会损失些绝对精度[^1]。 ### 应用场景分析 #### 定点数的应用领域 - **嵌入式系统**:在资源受限环境下运行良好,因为不需要复杂的硬件支持来进行浮点运算操作; - **音频信号处理**:适合用于声音采样率转换等任务中,这类应用通常只需要范围内高密度分布的离散值即可满足需求; - **图像压缩算法实现**:JPEG编码过程中量化表的设计就是基于此原理完成的,它利用了人类视觉系统的特性而牺牲了定量的颜色深度换取更好的压缩效果。 #### 浮点数更适合的情况 - **科学研究计算**:物理模拟、气象预报等领域经常涉及跨越多个数量级的变化量之间的复杂交互作用模型构建工作; - **图形渲染引擎开发**:为了达到逼真的光影效果展示目的,往往需要用到极高精度的置坐标参数描述物体表面细节特征; - **金融交易软件设计**:尽管货币金额本身属于低精度范畴,但在涉及到汇率换算等问题上还是更倾向于选用具备更高灵活性特性的浮点型变量来承载中间过程中的临时结果。 ```cpp // C++代码片段展示了如何定义不同类型的数值变量 float floatingPointNumber = 3.14f; // 单精度浮点数 double doublePrecisionFloat = 2.71828; // 双精度浮点数 int fixedPointIntegerPart = 5; short int fractionalBitsCount = 16; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值