计算机中的数制系统与数据表示
立即解锁
发布时间: 2025-08-20 02:12:40 阅读量: 1 订阅数: 4 


计算机架构:软件、编码与硬件的综合探讨
### 计算机中的数制系统与数据表示
在计算机领域,数制系统和数据表示是非常基础且重要的概念。了解不同的数制系统以及如何在它们之间进行转换,对于理解计算机的工作原理至关重要。
#### 1. 数制系统基础
在日常生活中,我们最常用的是十进制数制,也就是以 10 为基数的数制。但在计算机中,还广泛使用二进制、八进制和十六进制。
不同基数下相同数字的表示和值是不同的。例如,十进制的 221 与八进制的 221 和十六进制的 221 所代表的实际数值不同:
- \(221_{(10)} = 2 * 10^2 + 2 * 10^1 + 1 * 10^0 = 221\)
- \(221_{(8)} = 2 * 8^2 + 2 * 8^1 + 1 * 8^0 = 145\)
- \(221_{(16)} = 2 * 16^2 + 2 * 16^1 + 1 * 16^0 = 545\)
这种通过位置来确定数字值的方法称为位置记数法,它是评估任何基数正整数的关键,并且其十进制值是进行数制转换的参考点。
##### 1.1 二进制
计算机使用的数制系统是二进制,即基数为 2。在二进制数中,每个系数 \(C_i\) 带有 \(2^i\) 的权重。任何信息、机器指令或数据都由 0 和 1 组成的位串表示。
以四位二进制数为例,它可以表示一个无符号整数,其值始终为正。实际上,四位二进制数可看作是五位二进制数,其中最左边的 0 作为正号被隐藏。由于总共有 \(2^4 = 16\) 种组合,所以可以表示从 0 到 15 的 16 个正整数。每个系数由 0 或 1 表示。
二进制数的加法运算遵循特定规则。例如,要表示 1,需要在 0000 的基础上加 1 得到 0001;要表示 2,则在 0001 的基础上加 1,由于二进制位不能大于 1,所以和位变为 0,并向更高位进位:
```
0001
+)
1
0010
```
给定一个二进制数,可以使用其位置记数法计算其十进制值。例如:
\(1001 0001_{(2)} = 1 * 2^7 + 1 * 2^4 + 1 * 2^0 = 128 + 16 + 1 = 145\)
在简单的 CPU 中,加法器用于执行两个二进制数 A 和 B 之间的算术运算。加法器接收输入 A 和输入 B,并生成算术和 S。16 位加法器意味着在一个加法周期内可以将两个 16 位操作数相加,而 32 位加法器可以在一个加法周期内将两个 32 位操作数相加。一位全加器的框图如下:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(Ai):::process --> S(Si):::process
B(Bi):::process --> S
C(Ci):::process --> S
S --> C1(Ci+1):::process
```
一位全加器有三个输入 \(A_i\)、\(B_i\) 和 \(C_i\),以及两个输出 \(S_i\) 和 \(C_{i + 1}\):
- \(A_i\) 是 A 中的第 i 位。
- \(B_i\) 是 B 中的第 i 位。
- \(C_i\) 是第 i 位的进位输入。
- \(S_i\) 是第 i 位的和输出。
- \(C_{i + 1}\) 是第 i 位的进位输出或第 i + 1 位的进位输入。
如果加法器只能添加两个输入位,则称为半加器。
##### 1.2 八进制
当基数为 8 时,数字被称为八进制形式。八进制数字范围从 0 到 7,不存在 8 及以上的数字。由于基数不同,八进制中的数字与十进制中相同数字的实际值不同。例如,八进制的 221 表示“二、二、一 八进制”,这里的八进制“百”(\(8^2 = 64\))与十进制的“百”定义不同。同样可以使用位置记数法计算八进制数的十进制值。
##### 1.3 十六进制
当基数为 16 时,数制系统为十六进制。在十六进制系统中,需要 16 个不同的符号来表示所有十六进制数字。除了 0 - 9 这十个十进制数字外,还使用字母 A - F 来表示 10 - 15。以下是前 16 个十进制、二进制、八进制和十六进制数字的对应关系:
| 十进制 | 二进制 | 八进制 | 十六进制 |
| ---- | ---- | ---- | ---- |
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 10 | 8 |
| 9 | 1001 | 11 | 9 |
| 10 | 1010 | 12 | A |
| 11 | 1011 | 13 | B |
| 12 | 1100 | 14 | C |
| 13 | 1101 | 15 | D |
| 14 | 1110 | 16 | E |
| 15 | 1111 | 17 | F |
每个四位无符号整数的值范围从 0 到 15。由于 16 代表十六进制,所以通常用 x 来代替基数 16,例如 \(221_{(16)}\) 可以写成 \(221_x\)。在现代计算机中,二进制数通常以十六进制形式书写,因为位模式更容易可视化。
#### 2. 数制转换
理解位置记数法的基本概念后,就可以将正整数 A 转换为任何基数 B 的数。一种常用的转换方法是除法算法:
1. 给定一个数 N。
2. 重复以下步骤:
- 将 N 除以 B,得到商和余数。
- 余数是基数 B 表示的数中从最右边开始的下一位数字。
- 将 N 设置为得到的商作为新的数。
3. 直到 N 为 0 为止。
例如,将十进制数 145 转换为八进制数:
```
8 | 145
| 1 = Co
8 | 18
| 2 = C1
8 | 2
| 2 = C2
```
所以 \(145_{(10)} = 221_{(8)}\)
使用这种除法算法,还可以将二进制的正整数 A 转换为任何基数的数,并将每个系数从二进制转换为文本字符,然后在屏幕上显
0
0
复制全文
相关推荐










