(王道计算机组成原理)第二章数据的表示和运算-第一节:数制与编码 1(进位计数制及其相互转换)

本文详细介绍了进位计数法,包括十进制、二进制、八进制和十六进制,并阐述了计算机采用二进制的原因。接着,重点讲解了各种进制间的转换方法,如利用二进制作为媒介进行转换,以及如何将十进制数转换为其他进制数。此外,还涵盖了二进制、八进制和十六进制的相互转换技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:采用二进制编码原因

计算机采用二进制是因为它在物理实现上最简单、最可靠,同时逻辑运算清晰、易于扩展,是最适合数字电子系统的表示方式。具体而言:

  • 物理实现简单可靠:在电子电路中,电压的高低、电流的有无、开关的闭合与断开等都可以用来表示“0”和“1”
  • 逻辑运算简单高效:计算机中的所有操作最终都可转化为逻辑运算(如与、或、非、异或等),这些逻辑运算在二进制下非常容易用门电路(AND、OR、NOT 等)来实现
  • 存储和传输稳定:二进制数据在存储器(如内存、硬盘)或传输过程中更不容易出错。
  • 制造成本低:使用二进制意味着硬件只需处理两种状态,元件设计更简单,成本更低
  • 便于抽象和扩展:虽然底层使用的是二进制,但通过软件和硬件的配合,可以轻松地将二进制抽象成字符、图像、音频等各种形式

二:进位计数制

进位计数法是一种常用的计数方法,其核心在于每一位上的数字根据固定的基数进行累积,当达到该基数时就向高位进位。常见的进位制包括十进制、二进制、八进制和十六进制等。在进位计数法中,每个数位上可以使用的不同数码的数量称为该进位制的“基数”。例如,十进制的基数为10,使用0到9这十个数码表示数值,每当某一位上的数值达到10时,就会向前一位进位。类似地,二进制的基数为2,仅使用0和1两个数码,“逢二进一”;八进制的基数为8,使用0到7共八个数码,“逢八进一”;十六进制的基数为16,使用0到9以及A到F(分别代表10到15)共十六个符号,“逢十六进一”。

每一个数码所表示的实际数值不仅取决于其本身的大小,还与它所在的数位有关。这个与位置相关的系数称为“权”或“位权”。一个数的总体值等于各个数位上的数码乘以其对应位权后的总和。对于任意一个 r r r进制数( K n K n − 1 . . . K n K − 1 . . . K − m K_{n}K_{n-1}...K_{n}K_{-1}...K_{-m} KnKn1...KnK1...Km)的数值可以表示为

K n r n + K n − 1 r n − 1 + . . . K 0 r 0 + K − 1 r − 1 + . . . + K − m r − m = ∑ i = n − m K i r i K_{n}r^{n}+K_{n-1}r^{n-1}+...K_{0}r^{0}+K_{-1}r^{-1}+...+K_{-m}r^{-m}=\sum_{i=n}^{-m}K_{i}r^{i} Knrn+Kn1rn1+...K0r0+K1r1+...+Kmrm=i=nmKiri

具体而言

  • 十进制:例如975, 975.36 = 9 × 100 + 7 × 10 + 5 × 1 + 3 × 0.1 + 6 × 0.01 975.36=9×100+7×10+5×1+3×0.1+6×0.01 975.36=9×100+7×10+5×1+3×0.1+6×0.01
    ,也即 975 = 9 × 1 0 2 + 7 × 1 0 1 + 5 × 1 0 0 + 3 × 1 0 − 1 + 6 × 1 0 − 2 975=9×10^{2}+7×10^{1}+5×10^{0}+3×10^{-1}+6×10^{-2} 975=9×102+7×101+5×100+3×101+6×1