# 整数的二进制表示

> CIE A-Level 计算机科学 · 9618
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u1-binary-representation-of-integers/

本子主题讲解计算机系统中整数如何以二进制形式存储。你将学习十进制与二进制的相互转换，以及对于任意位长，计算无符号整数和符号整数的取值范围。

**先修:** 掌握十进制（基数10）数制的基础概念

## 学习目标

- 实现无符号整数和补码整数的二进制与十进制相互转换
- 给定位长时，计算可表示的值范围和不同值的个数
- 区分无符号二进制表示和补码符号二进制表示
- 识别并避免考试中在范围计算和转换时的常见错误

## 无符号二进制整数

**无符号二进制整数** — 非负整数的表示方式，每个位对应2的幂次权重，最右侧最低有效位的权重为$2^0$。

*记法:* n-bit unsigned

*例:* 4位无符号整数可表示0到15

要将无符号二进制数转换为十进制，将每个位乘以对应权重后求和。要将十进制转换为无符号二进制，重复除以2、收集余数，再将余数顺序反转即可。

**例题:** 将5位无符号二进制$10110_2$转换为十进制

1. 从最右侧开始，为每个位标注对应权重：
2. $$\text{Bit}: 1 \quad 0 \quad 1 \quad 1 \quad 0 \\ \text{Weight}: 2^4 \quad 2^3 \quad 2^2 \quad 2^1 \quad 2^0 = 16 \quad 8 \quad 4 \quad 2 \quad 1$$
3. 每个位乘以对应权重后求和：
4. $$(1 \times 16) + (0 \times 8) + (1 \times 4) + (1 \times 2) + (0 \times 1) = 22$$

> **考试提示:** 始终从最右侧的0开始计数位位置，不要从1开始，避免权重计算错误。

## 无符号二进制整数的取值范围

对于n位无符号二进制，每个位组合都对应一个唯一的非负整数。最小值为0（所有位都是0），最大值出现在所有位都是1时。

**n位无符号二进制的取值范围** — 总不同值个数 = $2^n$。取值范围是$0$到$2^n - 1$（闭区间）。

**例题:** 求6位无符号二进制整数的取值范围，它可以存储多少个不同的值？

1. n=6位，计算总不同值个数：
2. $$2^n = 2^6 = 64$$
3. 最大值等于总个数减1，因为我们从0开始计数：
4. $$\text{Minimum} = 0, \quad \text{Maximum} = 64 - 1 = 63$$
5. 最终结果：6位无符号整数可存储64个不同值，范围从0到63。

> **考试提示:** CIE经常考察最大值，不是总个数——永远记住要给$2^n$减1。

## 符号二进制：二进制补码

CIE 9618仅考察符号二进制整数的补码表示法，它可以同时表示正整数和负整数。最左侧（最高有效位）权重为负，其余所有位权重为正。

**补码符号整数** — 符号二进制表示法，其中最左侧位的权重为$-2^{n-1}$，其余所有位遵循标准无符号权重规则。该表示法简化了二进制运算。

*记法:* n-bit two's complement

**例题:** 将5位补码$11010_2$转换为十进制

1. 计算最左侧位的负权重：
2. $$n=5, \quad \text{Leftmost weight} = -2^{5-1} = -16$$
3. 列出所有位及其对应权重：
4. $$\text{Bit}: 1 \quad 1 \quad 0 \quad 1 \quad 0 \\ \text{Weight}: -16 \quad 8 \quad 4 \quad 2 \quad 1$$
5. 对加权后的位求和得到最终十进制值：
6. $$(1 \times -16) + (1 \times 8) + (0 \times 4) + (1 \times 2) + (0 \times 1) = -6$$

> **考试提示:** 永远不要忘记最高位的负权重——这是补码转换中最常见的错误。

## 补码整数的取值范围

补码中会预留一个位表示符号，因此取值范围偏移后可以包含负值。对于相同位长，总不同值个数仍然是$2^n$，和无符号表示相同。

**n位补码的取值范围** — 最小（最负）值 = $-2^{n-1}$，最大（最正）值 = $2^{n-1} - 1$，总共有$2^n$个不同值。

**例题:** 8位补码符号整数的取值范围是什么？

1. n=8位，使用范围公式：
2. $$\text{Minimum} = -2^{n-1} = -2^{7} = -128$$
3. $$\text{Maximum} = 2^{n-1} - 1 = 2^7 - 1 = 127$$
4. 最终范围：8位补码可表示从-128到127闭区间的所有整数，总共有256个不同值。

## 常见错误

- **错误做法:** 将n位无符号二进制的最大值记为$2^n$
  - 原因: 范围从0开始，因此最大值比总可能位组合数少1
  - 正确做法: n位无符号二进制的最大值是$2^n - 1$
- **错误做法:** 将8位补码的范围记为-127到128
  - 原因: 最小值是$-2^{n-1}$，最大值是$2^{n-1} - 1$，因此负范围比正范围多一个值
  - 正确做法: 8位补码的范围是$-128 \leq x \leq 127$
- **错误做法:** 转换补码时给最高位赋予正权重
  - 原因: 补码的核心设计就是用负权重的最高位来表示负值
  - 正确做法: 始终将n位补码的最左侧位乘以$-2^{n-1}$
- **错误做法:** 计算权重时从1而不是0开始计数位位置
  - 原因: 最右侧位的权重是$2^0$，因此所有位位置偏移1会导致每个位的权重都错误
  - 正确做法: 从最右侧最低有效位的0开始计数位位置
- **错误做法:** 声称4位无符号整数可表示1到16共16个值
  - 原因: 0是有效的整数，需要被表示，因此无符号二进制的范围永远从0开始
  - 正确做法: 4位无符号整数范围是0到15，总共有16个不同值

## 速查表

| 表示方式 | 总不同值个数 | 最小值 | 最大值 |
| --- | --- | --- | --- |
| n位无符号 | $2^n$ | $0$ | $2^n - 1$ |
| 4位无符号 | 16 | $0$ | $15$ |
| 8位无符号 | 256 | $0$ | $255$ |
| n位补码 | $2^n$ | $-2^{n-1}$ | $2^{n-1} - 1$ |
| 4位补码 | 16 | $-8$ | $7$ |
| 8位补码 | 256 | $-128$ | $127$ |

## 下一步

二进制整数表示是计算机系统中所有数据存储的基础概念，信息表示的所有后续主题都建立在该知识之上。理解位长和取值范围对于二进制运算、溢出错误、内存寻址，以及表示分数、文本、图像、声音等其他数据类型至关重要。掌握本子主题会让更高级的数制表示概念更容易学习，并且几乎每一次CIE 9618第1卷考试都至少会有一道考察该内容的题目。

- [实数的二进制表示](https://www.owlsprep.com/zh/study/cie-9618-u1-binary-representation-of-real-numbers/)
- [字符编码](https://www.owlsprep.com/zh/study/cie-9618-u1-character-encoding/)
- [图像的二进制表示](https://www.owlsprep.com/zh/study/cie-9618-u1-binary-representation-of-images/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u1-binary-representation-of-integers/
