前置知识: 计算机基础

数据表示与运算

00:00
8 min Intermediate 2026/6/14

数据表示与运算:数值编码、浮点标准、定点运算、溢出检测与校验码

1. 数值编码

1.1 原码

最高位为符号位(0正1负),其余位为绝对值:

8 位原码范围:,0 有两种表示(+0 和 -0)。

1.2 反码

正数与原码相同,负数符号位为1,数值位按位取反:

1.3 补码

计算机中最常用的整数表示法:

关键性质

  • 补码 = 反码 + 1(负数)
  • 0 的补码唯一
  • 位补码范围:
  • 补码加减法统一为加法

快速求补码:从最低位到第一个1保持不变,其余位取反。

1.4 移码

补码的符号位取反,用于浮点数的阶码表示:

移码保持了数值的大小顺序,便于比较大小。

2. 定点运算

2.1 补码加法

符号位参与运算,进位自然丢弃。

2.2 补码减法

其中 的各位取反加1。

2.3 溢出检测

单符号位法

  • :无溢出
  • :溢出

双符号位法(变形补码)

  • :结果为正,无溢出
  • :正溢出
  • :负溢出
  • :结果为负,无溢出

2.4 定点乘法

原码一位乘法

  • 符号位单独处理:
  • 数值部分:被乘数加或不加(根据乘数位),然后右移

补码一位乘法(Booth 算法)

根据乘数末两位的差值决定操作:

操作
00右移一位
01,右移一位
10,右移一位
11右移一位

3. 浮点数表示

3.1 IEEE 754 标准

浮点数格式:

参数单精度(32位)双精度(64位)
符号位 S1 位1 位
阶码 E8 位11 位
尾数 M23 位52 位
偏置值1271023
阶码范围1~2541~2046
规格化范围

3.2 特殊值

阶码 E尾数 M含义
全0全0±0
全0非零非规格化数
全1全0±∞
全1非零NaN

3.3 非规格化数

当阶码全0、尾数非零时,表示非规格化数:

非规格化数填补了0和最小规格化数之间的间隙,实现渐进下溢

3.4 浮点精度

单精度有效位数约 7 位十进制,双精度约 15~16 位十进制。

机器 epsilon

4. 浮点运算

4.1 浮点加减法

  1. 对阶:小阶向大阶看齐,尾数右移
  2. 尾数加减:对阶后的尾数相加减
  3. 规格化:左规或右规使尾数满足 格式
  4. 舍入:按舍入模式处理超出位
  5. 溢出判断:检查阶码是否溢出

4.2 舍入模式

模式说明
就近舍入舍入到最接近的可表示值(默认)
向0舍入截断
向+∞舍入向上取整
向-∞舍入向下取整

就近舍入的”银行家舍入”规则:当恰好在中间时,舍入到偶数。

4.3 浮点乘除法

乘法

除法

5. 校验码

5.1 奇偶校验

在数据后添加1位校验位,使1的个数为奇数(奇校验)或偶数(偶校验)。

  • 只能检测奇数个错误
  • 不能纠正错误
  • 检错 数据)

5.2 海明码(Hamming Code)

在数据之间插入 个校验,满足:

其中 为数据数, 为校验数。

校验位置:放在 位置(第1、2、4、8…)。

编码步骤

  1. 确定校验
  2. 将数据填入非 位置
  3. 每个校验覆盖其位置二进制表示对应位为1的所有
  4. 计算各校验

纠错能力:SEC-DED(纠错双检错)

5.3 CRC 循环冗余校验

将数据视为项式,用生成多项式除取余数作为校验码。

编码过程

  1. 数据 左移 生成多项式阶数)
  2. 生成多项式 模2除法取余数
  3. 发送

检错能力

  • 所有比特错误
  • 所有双比特错误生成多项式 因子时)
  • 所有奇数个比特错误
  • 所有长 的突发错误

5.4 校验码对比

校验码冗余检错能力纠错能力应用
奇偶校验1位奇数个错内存ECC基础
海明码2位错1位错ECC内存
CRC突发错误无(可配合重传)网络通信

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式