计算机基本工作原理——一文搞懂定点数与浮点数

一、数值表示的底层需求

计算机存储和运算的所有数据最终都是二进制形式。但如何表示实数(即带小数点的数)?这需要解决两个核心问题:

范围:能表示的数值范围有多大?

精度:数值的最小间隔是多少?

定点数和浮点数是两种不同的解决方案。

二、定点数(Fixed-Point Number)

1. 定义

核心特征:小数点的位置在存储时是固定不变的。

示例:假设用8位二进制表示一个数,若小数点固定在中间(即第4位后),则:

二进制 0011 1100 表示 0011.1100,即十进制 3.75

2. 存储结构

通常分为 整数部分小数部分,总位数固定。

Q格式表示法:广泛用于嵌入式系统,格式为 Qm.n:

m:整数部分位数

n:小数部分位数

总位数 = m + n + 1(符号位)

示例:Q7.8 表示符号位1位,整数7位,小数8位(共16位)。

3. 运算规则

加减法:直接对齐小数点后按整数运算。

乘法:结果的小数位数是乘数小数位数之和,需移位调整。

例如 Q3.5 × Q4.4 → 结果需右移 5+4=9 位得到正确小数位。

除法:复杂,需通过移位和迭代算法实现。

4. 优缺点

优点

硬件实现简单,运算速度快。

精度固定,适合对确定性要求高的场景(如财务计算)。

缺点

动态范围有限,无法同时表示极大和极小的数。

需预先确定小数点位置,灵活性差。

5. 应用场景

嵌入式系统(资源有限,无需浮点运算单元)

数字信号处理(DSP)

金融交易(避免浮点精度误差)

三、浮点数(Floating-Point Number)

1. 定义

核心特征:小数点位置可以“浮动”,通过指数动态调整数值范围。

科学计数法的二进制版本:

数值 = 符号 × 尾数 × 2指数

例如:-1.1011 × 25 → 十进制 −54.0

对于二进制数-1.1011 × 25 转换为十进制数,具体步骤如下:计算 25的值:\ 25=2×2×2×2×2=32。将二进制小数1.1011转换为十进制小数:根据二进制转十进制的 “按权相加” 法,从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右。即1×2−1+0×2−2+1×2−3+1×2−4=0.5+0+0.125+0.0625=0.6875,所以1.1011转换为十进制是1+0.6875=1.6875。
计算最终结果:因为符号为负,所以最终结果为−(1.6875×32)=−54.0。

2. 存储结构(以IEEE 754标准为例)

单精度(32位)

符号位(1位) + 指数(8位,偏移127) + 尾数(23位,隐含前导1)

双精度(64位):

符号位(1位) + 指数(11位,偏移1023) + 尾数(52位,隐含前导1)

IEEE 754 单精度示例

根据IEEE 754标准,数值 -6.25 的单精度(32位)和双精度(64位)二进制表示如下:

单精度(32位)表示

步骤解析:

  1. 符号位:负数 → 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点滴汇聚江河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值