【计算机计算基础】给大一新生的数制讲解:二进制、八进制、十六进制

使用教程 作者: 精灵星空 SKY315.COM 更新于: 浏览: 133
码字发文不易,转载请注明出处【精灵星空 SKY315.COM】

一、为什么计算机使用二进制?

计算机内部由无数个电子开关(晶体管)组成,每个开关只有两种状态:开(通电) 和 关(断电)。这两种状态正好用 1 和 0 表示。所以计算机最自然地使用二进制。

  • 二进制:只有 0 和 1,逢二进一。

  • 优点:物理实现简单、抗干扰强、运算规则简单。

  • 缺点:人读写不方便,一串 0/1 容易看错。

为了解决这个缺点,我们引入 八进制 和 十六进制 作为二进制的“缩写”。


二、三种进制的基本概念

 
进制 基数 可用数字 前缀(编程中) 后缀(汇编中)
二进制 2 0,1 0b 或 0B B
八进制 8 0~7 0o 或 0O Q 或 O
十六进制 16 0~9, A~F 0x 或 0X H

十六进制中 A—F与10进制数的关系:A=10, B=11, C=12, D=13, E=14, F=15。

位权:每个数字所在位置代表的数值大小。

  • 例如十进制 123 = 1×10² + 2×10¹ + 3×10⁰

  • 二进制 1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8+0+2+1 = 11

  • 八进制 127 = 1×8² + 2×8¹ + 7×8⁰ = 64+16+7 = 87

  • 十六进制 2F = 2×16¹ + 15×16⁰ = 32+15 = 47


三、为什么用八进制和十六进制?

  • 八进制:1 位八进制 = 3 位二进制(因为 2³=8)。
    在早期计算机(如 12 位、24 位字长)中,按 3 位分组很方便。
    现在 Linux 文件权限仍然用八进制:chmod 755 中的 7、5、5 分别代表读+写+执行、读+执行、读+执行。

  • 十六进制:1 位十六进制 = 4 位二进制(因为 2⁴=16)。
    现代计算机普遍以 8 位(1 字节)为基本单位,1 字节正好用 2 位十六进制表示。
    例如:0xFF = 二进制 1111 1111 = 十进制 255。

总结:八进制和十六进制是为了方便人类读写二进制而创造的。


四、相互转换方法(大量实例)

1. 二进制 ↔ 十进制

(1)二 → 十:按权展开求和。
        例:1101 1010
        = 1×2⁷ + 1×2⁶ + 0×2⁵ + 1×2⁴ + 1×2³ + 0×2² + 1×2¹ + 0×2⁰
        = 128 + 64 + 0 + 16 + 8 + 0 + 2 + 0 = 218

(2)十 → 二:除 2 取余,逆序排列。
       例:十进制 45
       45 ÷ 2 = 22 余 1
       22 ÷ 2 = 11 余 0
       11 ÷ 2 = 5 余 1
        5 ÷ 2 = 2 余 1
        2 ÷ 2 = 1 余 0
        1 ÷ 2 = 0 余 1
        逆序:101101 → 45 = 101101₂

2. 二进制 ↔ 八进制

(1)二 → 八:从右向左,每 3 位一组,不足左边补 0。
        例:11010110
        分组:011 010 110
        每组转十进制:3, 2, 6 → 326₈

(2)八 → 二:每位八进制展开为 3 位二进制。
        例:753₈
        7 → 111,5 → 101,3 → 011 → 111101011₂

3. 二进制 ↔ 十六进制

(1)二 → 十六:从右向左,每 4 位一组,不足补 0。
        例:110110101
        补 0:0001 1011 0101
        分组转十六:1, B, 5 → 1B5₁₆

(2)十六 → 二:每位十六进制展开为 4 位二进制。
        例:A3F₁₆
         A → 1010,3 → 0011,F → 1111 → 101000111111₂

4. 十进制 ↔ 八进制 / 十六进制

(1)十 → 八:除 8 取余,逆序。
       例:100
       100 ÷ 8 = 12 余 4
       12 ÷ 8 = 1 余 4
       1 ÷ 8 = 0 余 1
       逆序:144₈

(2)十 → 十六:除 16 取余,逆序。
       例:255
        255 ÷ 16 = 15 余 15 (F)
        15 ÷ 16 = 0 余 15 (F)
        逆序:FF₁₆

八 → 十:按权展开。
        例:144₈ = 1×64 + 4×8 + 4 = 64+32+4 = 100

十六 → 十:按权展开。
        例:FF₁₆ = 15×16 + 15 = 240+15 = 255

5. 八进制 ↔ 十六进制

通常先转成二进制,再分组。
        例:326₈ → 二进制 011 010 110 → 补成四位:0011 0101 1010?
        等等,326₈ = 3→011, 2→010, 6→110,连起来 011010110,从右向左四位分组:0 1101 0110,即 D6₁₆。
        验证:326₈ = 3×64+2×8+6 = 192+16+6 = 214;D6₁₆ = 13×16+6 = 208+6 = 214。正确。


五、计算机领域中的实际用途

  1. 内存地址:调试器、反汇编中常见 0x00401000,十六进制。

  2. 颜色代码:网页颜色 #FF0000 表示红色,每两位十六进制代表 R、G、B 分量(00~FF)。

  3. 文件权限:Linux chmod 755,7=读+写+执行,5=读+执行。

  4. 网络 MAC 地址:00:1A:2B:3C:4D:5E,每字节两位十六进制。

  5. IPv6 地址:2001:0db8:85a3:0000:0000:8a2e:0370:7334,用十六进制表示。

  6. 位运算与掩码:如 x & 0xFF 取低 8 位,0x0F 取低 4 位。

  7. 汇编语言:立即数常用十六进制,如 MOV AX, 0x1A。

  8. Unicode 码点:U+4E2D 表示汉字“中”。


六、快速转换技巧

  • 记住常见值:

    • 1 位十六进制 = 4 位二进制

    • 1 位八进制 = 3 位二进制

    • 1 字节 = 8 位 = 2 位十六进制

    • 0xFF = 255, 0x100 = 256

  • 二进制转十六进制:从右向左四位一组,直接查表:

    二进制 十六进制
    0000 0
    0001 1
    0010 2
    ... ...
    1111 F
  • 十六进制转二进制:每位拆成 4 位。


七、课堂练习(建议学生动手)

  1. 将二进制 1011 0101 转换为十进制、八进制、十六进制。

  2. 将十进制 200 转换为二进制、八进制、十六进制。

  3. 将十六进制 2A7 转换为二进制、八进制、十进制。

  4. 将八进制 527 转换为二进制、十六进制、十进制。

  5. 已知颜色代码 #3A7F2B,写出其 RGB 三个分量的十进制值。

答案参考:

  1. 10110101₂ = 181₁₀ = 265₈ = B5₁₆

  2. 200₁₀ = 11001000₂ = 310₈ = C8₁₆

  3. 2A7₁₆ = 0010 1010 0111₂ = 1247₈ = 679₁₀

  4. 527₈ = 101 010 111₂ = 157₁₆ = 343₁₀

  5. #3A7F2B → R=3A₁₆=58,G=7F₁₆=127,B=2B₁₆=43


八、总结

  • 二进制是计算机的“母语”,八进制和十六进制是它的“方言”,方便人类阅读。

  • 掌握转换的核心:按权展开(任意进制转十进制)和除基取余(十进制转任意进制)。

  • 二进制与八/十六进制转换:分组法(3位一组或4位一组)。

  • 多练习,形成条件反射,对后续学习汇编、操作系统、网络等课程至关重要。

希望这份讲解能帮助大家轻松理解数制!