首页学习资料常用数制及其转换
计算机基础知识第二章 数制与数据编码/第一节 常用数制及其转换

常用数制及其转换

2026-03-11

第一节 常用数制及其转换

概述

本节是计算机基础知识中极为核心的一环,旨在系统性地讲解计算机世界中最常用的几种数制(计数系统)以及它们之间相互转换的原理与方法。计算机内部所有信息,无论是数字、文字、图片还是声音,最终都以二进制形式存储和处理。理解数制及其转换,是理解计算机工作原理、进行程序设计、数据存储与网络通信的基础。

学习目标

  1. 掌握十进制、二进制、八进制和十六进制的基本概念、表示方法和特点。
  2. 深刻理解“基数”和“位权”这两个核心概念。
  3. 熟练掌握二进制、八进制、十六进制与十进制之间的相互转换方法。
  4. 熟练掌握二进制与八进制、二进制与十六进制之间的快速转换技巧。
  5. 了解数制在计算机科学中的实际应用场景。

核心概念

1. 数制

数制,也称为计数系统或进位制,是用一组固定的符号和统一的规则来表示数值的方法。其核心要素包括:

  • 基数:数制中所使用的基本数字符号的个数。例如,十进制的基数是10(使用0-9十个符号),二进制的基数是2(使用0和1两个符号)。基数决定了“逢几进一”。
  • 位权:在进位计数制中,每个数位所代表的实际值大小。它是一个以基数为底、以数位序号为指数的幂值。例如,在十进制数123中,从右向左(最低位开始),第一位(个位)的位权是10^0=1,第二位的位权是10^1=10,第三位的位权是10^2=100。

2. 常用数制

  • 十进制:人类日常生活中最常用的数制,基数为10,符号集为{0,1,2,3,4,5,6,7,8,9}。
  • 二进制:计算机硬件直接识别和处理的数制,基数为2,符号集为{0,1}。所有数据在计算机底层都以二进制形式存在。
  • 八进制:基数为8,符号集为{0,1,2,3,4,5,6,7}。由于2^3=8,因此二进制与八进制之间存在天然的简便转换关系,常用于早期计算机系统和某些编程场景中简化二进制表示。
  • 十六进制:基数为16,符号集为{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}(其中A-F对应十进制10-15)。由于2^4=16,二进制与十六进制转换极为方便,是现代计算机科学中表示二进制数据的标准缩写形式,广泛用于内存地址、机器码、颜色代码等表示。

原理分析

数制转换的本质是等值变换,即在保持数值实际大小不变的前提下,改变其表示形式。转换过程严格遵循“按权展开,基数运算”的数学原理。

核心原理公式:对于一个N进制数 (S_k S_{k-1} ... S_1 S_0 . S_{-1} S_{-2} ...)_N,其对应的十进制值D可以通过以下公式计算:
D = S_k * N^k + S_{k-1} * N^{k-1} + ... + S_1 * N^1 + S_0 * N^0 + S_{-1} * N^{-1} + S_{-2} * N^{-2} + ...
其中,S_i 是第i位上的数字符号对应的数值,N是基数,i是位序号(整数部分从0开始向左递增,小数部分从-1开始向右递减)。

所有转换方法都基于此公式或其逆过程。例如,将其他进制转换为十进制,就是直接应用此公式进行计算(“按权展开求和法”)。将十进制转换为其他进制,则是此公式的逆过程,通过“除基取余法”(整数部分)和“乘基取整法”(小数部分)来逐位确定目标进制下的各个数字符号。

详细内容

一、 十进制与其他进制之间的转换

1. 其他进制转十进制:按权展开求和法

这是最直接的方法。将待转换数的每一位数字乘以其所在位置的位权(基数的幂),然后将所有乘积相加。

步骤

  1. 写出待转换数的每一位数字及其对应的位序号(小数点左侧,从右往左,最低位序号为0,向左递增;小数点右侧,从左往右,序号为-1, -2, ...递减)。
  2. 计算每一位的位权:基数 ^ 位序号。
  3. 将每一位的数字值乘以其位权。
  4. 将所有乘积相加,结果即为十进制数。

2. 十进制转其他进制:整数部分—除基取余法;小数部分—乘基取整法

转换需将整数部分和小数部分分开处理。

整数部分转换(除基取余法)步骤

  1. 用十进制整数除以目标数制的基数,记录商和余数。
  2. 将上一步得到的商作为新的被除数,继续除以基数,记录新的商和余数。
  3. 重复步骤2,直到商为0为止。
  4. 将每次得到的余数从最后一次到第一次(即逆序排列)组合起来,即为目标进制下的整数部分。

小数部分转换(乘基取整法)步骤

  1. 用十进制小数乘以目标数制的基数,记录乘积的整数部分和小数部分。
  2. 将上一步得到的小数部分作为新的乘数,继续乘以基数,记录新的整数部分和小数部分。
  3. 重复步骤2,直到小数部分为0,或达到所需的精度为止。
  4. 将每次得到的整数部分从第一次到最后一次(即顺序排列)组合起来,即为目标进制下的小数部分。

注意:十进制小数转换为二进制(或其他进制)时,可能出现无限循环的情况,此时只能根据精度要求进行近似转换。

二、 二进制、八进制、十六进制之间的快速转换

由于8=2^3,16=2^4,二进制与八进制、十六进制之间存在分组对应关系,这使得它们之间的转换可以快速完成,无需经过十进制中转。

1. 二进制与八进制互转

二进制转八进制

  1. 以小数点为中心,将二进制数的整数部分向左(高位方向)、小数部分向右(低位方向),每3位分成一组
  2. 整数部分最高位一组若不足3位,在左侧补0;小数部分最低位一组若不足3位,在右侧补0。
  3. 将每一组3位二进制数,直接转换为对应的1位八进制数(000->0, 001->1, ..., 111->7)。

八进制转二进制
将每一位八进制数,直接展开为对应的3位二进制数(逆过程),然后按顺序连接起来即可。

2. 二进制与十六进制互转

二进制转十六进制
方法与转八进制类似,区别在于每4位分成一组

  1. 以小数点为中心,将二进制数的整数部分向左、小数部分向右,每4位分成一组
  2. 整数部分最高位一组若不足4位,在左侧补0;小数部分最低位一组若不足4位,在右侧补0。
  3. 将每一组4位二进制数,直接转换为对应的1位十六进制数(0000->0, 0001->1, ..., 1001->9, 1010->A, ..., 1111->F)。

十六进制转二进制
将每一位十六进制数,直接展开为对应的4位二进制数,然后按顺序连接起来即可。

3. 八进制与十六进制互转

通常以二进制作为桥梁进行转换,即:八进制 <-> 二进制 <-> 十六进制。先将一种进制转换为二进制,再将二进制转换为另一种进制。

实例分析

实例1:综合转换(二进制、十进制、十六进制)

背景:在程序调试中,观察到内存中某单元的数据为二进制 1101 1011,需要理解其数值含义。
分析与转换

  1. 二进制转十进制(按权展开)
    (11011011)_2 = 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
    = 128 + 64 + 0 + 16 + 8 + 0 + 2 + 1 = (219)_10
  2. 二进制转十六进制(四位分组)
    分组:1101 1011 -> 1101 (D) 和 1011 (B)。
    所以 (11011011)_2 = (DB)_16
  3. 十进制转二进制(除2取余)验证
    219 ÷ 2 = 109 ... 余1 (最低位)
    109 ÷ 2 = 54 ... 余1
    54 ÷ 2 = 27 ... 余0
    27 ÷ 2 = 13 ... 余1
    13 ÷ 2 = 6 ... 余1
    6 ÷ 2 = 3 ... 余0
    3 ÷ 2 = 1 ... 余1
    1 ÷ 2 = 0 ... 余1 (最高位)
    逆序排列余数:11011011,与原始数据一致。
    结论:二进制数 11011011 等价于十进制数 219 和十六进制数 DB。在计算机中,通常用十六进制 0xDB 来简洁地表示这个字节的数据。

实例2:带小数的转换

背景:理解计算机中浮点数存储的尾数部分,需要处理小数转换。
问题:将十进制数 12.375 转换为二进制表示。
分析与转换

  1. 整数部分 (12) 转换
    12 ÷ 2 = 6 ... 余0
    6 ÷ 2 = 3 ... 余0
    3 ÷ 2 = 1 ... 余1
    1 ÷ 2 = 0 ... 余1
    整数部分二进制结果为:1100
  2. 小数部分 (0.375) 转换
    0.375 × 2 = 0.75 ... 整数部分0 (第一位)
    0.75 × 2 = 1.5 ... 整数部分1 (第二位)
    0.5 × 2 = 1.0 ... 整数部分1 (第三位)
    小数部分为0,转换结束。
    小数部分二进制结果为:.011
  3. 合并(12.375)_10 = (1100.011)_2
    结论:十进制小数 12.375 可以精确地转换为有限位二进制小数 1100.011。可以进一步验证:1100.011 = 1*2^3 + 1*2^2 + 0*2^1 + 0*2^0 + 0*2^{-1} + 1*2^{-2} + 1*2^{-3} = 8+4+0+0+0+0.25+0.125 = 12.375

实例3:八进制与十六进制互转

背景:阅读一段旧的系统文档,其中地址用八进制 752 表示,需要转换为现代常用的十六进制格式。
分析与转换
以二进制为桥梁。

  1. 八进制转二进制
    每一位八进制数转3位二进制。
    7 -> 111
    5 -> 101
    2 -> 010
    所以 (752)_8 = (111 101 010)_2
  2. 二进制转十六进制
    将二进制数从右向左(或保持顺序,从低位向高位)每4位一组,不足补零。111101010 分组为 0001 1110 1010(左侧补一个0构成4位)。
    0001 -> 1
    1110 -> E (14)
    1010 -> A (10)
    所以 (111101010)_2 = (1EA)_16
    结论:八进制地址 752 对应的十六进制地址是 0x1EA

常见误区

  1. 混淆基数与位权:误以为基数就是每一位的值。正确理解:基数是“逢几进一”的那个“几”,决定了符号集大小;位权是“这一位代表多少”,是基数的幂次方。例如在二进制中,基数是2,从右数第三位的位权是2^2=4。
  2. 数位顺序错误:在进行“除基取余法”时,将余数顺序排列(先得到的余数放高位)。正确做法:必须逆序排列余数,即最后得到的余数是最高位。口诀:“除基取余,逆序排列”。
  3. 小数转换时无限循环处理不当:试图将不能精确转换的十进制小数(如0.1)转换为有限位二进制,并认为结果是错的。正确理解:类似1/3在十进制中表示为0.333...一样,0.1在二进制中是无限循环小数 0.0001100110011...。计算机存储时根据精度(如单精度浮点数)进行截断,存在微小的舍入误差。
  4. 二进制与十六进制分组错误:转换时分组方向错误或补零位置错误。正确做法:以小数点为界,整数部分向左(高位方向)分组,小数部分向右(低位方向)分组。补零时,整数部分在最高位组的左侧补零,小数部分在最低位组的右侧补零。
  5. 忽略不同数制的表示符号:在书写时未标明数制,导致混淆。正确做法:常用下标或前缀标明。如 (101)_20b101 表示二进制;(67)_80o67 表示八进制;(AF)_160xAF 表示十六进制。十进制通常省略或写为 (123)_10

应用场景

  1. 计算机硬件与数据存储:所有数据在内存、硬盘、CPU寄存器中都以二进制形式存在。理解二进制是理解内存地址(常用十六进制表示,如0x00400000)、数据存储格式(字节、字)的基础。
  2. 网络与通信:IP地址(如IPv4的192.168.1.1,本质是32位二进制数)、子网掩码、MAC地址(如00-1A-2B-3C-4D-5E,十六进制表示)都涉及数制知识。网络数据包也是以二进制流传输。
  3. 编程与软件开发:程序员在调试时,需要查看变量的十六进制内存映像。位运算(与、或、非、移位)直接操作二进制位。颜色表示(如Web中的 #FF8800 是RGB颜色的十六进制编码)也依赖于数制转换。
  4. 数字系统与嵌入式开发:在单片机、FPGA等嵌入式开发中,经常需要直接配置硬件寄存器,这些寄存器的每一位都有特定含义,使用二进制或十六进制进行设置是最直接的方式。
  5. 数据安全与加密:许多加密算法(如AES, RSA)的底层操作涉及大量的位运算和模运算,对二进制数据的深刻理解是学习密码学的基础。

知识拓展

  1. BCD码:一种用二进制编码表示十进制数字的方法。用4位二进制数表示1位十进制数(0-9),例如 (59)_10 的BCD码是 0101 1001。常用于数字显示、金融计算等需要精确十进制运算的场合。
  2. 原码、反码、补码:计算机中表示有符号整数的三种二进制编码方式。补码是目前计算机系统标准,它巧妙地将减法运算转换为加法运算,并统一了零的表示。理解补码是理解整数运算溢出、负数表示的关键。
  3. 进制与信息论:进制基数越高,表示相同数值所需的位数越少,但符号集越大。二进制虽然位数长,但物理实现最简单可靠(高低电平)。香农的信息论从数学上阐述了信息编码的基本原理。
  4. 其他进制:除了常用进制,还有十二进制(时间、角度)、二十进制(某些古老文明)、六十进制(时间、角度)等。在计算机科学中,也偶有使用三十二进制、六十四进制(如Base64编码)进行数据表示。

总结回顾

本节深入探讨了计算机科学中的基石——数制系统。核心要点如下:

  • 数制三要素:符号集、基数、位权。理解“逢基进一,位权是基数的幂”是根本。
  • 四大常用数制
    • 十进制:人类思维的基础。
    • 二进制:计算机物理实现的基础,一切信息的终极形态。
    • 八进制与十六进制:二进制的“缩写”,便于人类阅读和书写,十六进制尤为重要。
  • 两大转换方向
    • 与十进制互转:是基础。他转十用“按权展开求和法”;十转他用“除基/乘基取余/整法”。
    • 二、八、十六进制互转:是技巧。利用 2^3=8, 2^4=16 的关系,通过“分组对应法”快速转换,这是必须熟练掌握的高效技能。
  • 一个核心:所有转换都必须保证数值的等价性。
  • 应用无处不在:从底层硬件到上层应用,数制知识渗透在计算机科学的每一个角落。

掌握数制及其转换,不仅是通过考试的要求,更是打开计算机世界大门、培养计算思维的第一把钥匙。务必通过大量练习来巩固“按权展开”和“分组对应”这两种核心技能,做到准确、快速。

重点知识点

1

数制的定义与核心要素(基数、位权)

2

十进制、二进制、八进制、十六进制的表示与特点

3

其他进制转换为十进制的方法(按权展开求和法)

4

十进制转换为其他进制的方法(整数除基取余,小数乘基取整)

5

二进制与八进制、十六进制之间的快速分组转换法

6

数制转换中的常见误区与注意事项

7

数制在计算机硬件、网络、编程等领域的实际应用