测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看
官方题单 知识点专项

进制转换

搞懂进制含义,练十进制与二/八/十六进制互转。

开始练习 ← 返回广场
题数:13题
完成度:0/13

进制与进制转换



一、进制是什么



1.1 为什么需要进制



我们日常写数时,使用的是“十进制”,因为我们习惯用 $0\sim 9$ 这 $10$ 个符号来表示数。
但在计算机中,最容易表示的是“只有两种状态”(开/关、真/假),因此计算机更常用“二进制”。
为了书写方便,又常把二进制用“八进制”和“十六进制”进行简写。

1.2 常见进制与数字符号



1. 十进制($base=10$):$0,1,2,3,4,5,6,7,8,9$
2. 二进制($base=2$):$0,1$
3. 八进制($base=8$):$0,1,2,3,4,5,6,7$
4. 十六进制($base=16$):$0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F$
其中:$A=10,\ B=11,\ C=12,\ D=13,\ E=14,\ F=15$

1.3 “逢 $base$ 进 $1$”的含义



任何进制都遵循同一个规则:
当某一位“凑满 $base$”,就向前一位进 $1$,当前位回到 $0$。

举例说明:

  • 十进制:$9$ 后面是 $10$(逢 $10$ 进 $1$)
  • 二进制:$1$ 后面是 $10$(逢 $2$ 进 $1$)
  • 八进制:$7$ 后面是 $10$(逢 $8$ 进 $1$)
  • 十六进制:$F$ 后面是 $10$(逢 $16$ 进 $1$)

  • ---

    二、进制的常用表示符号



    2.1 末尾字母标注:$B/O/D/H$



    有些教材或题面会用末尾字母来表示进制:
  • $B$:Binary(二进制)
  • 例如:$1011B$ 表示二进制的 $1011$
  • $O$:Octal(八进制)
  • 例如:$17O$ 表示八进制的 $17$
  • $D$:Decimal(十进制)
  • 例如:$125D$ 表示十进制的 $125$(通常也可以不写 $D$)
  • $H$:Hexadecimal (十六进制)
  • 例如:$2EH$ 表示十六进制的 $2E$

    说明:
    $B/O/D/H$ 是一种“标注方式”,常见于书本、题面、笔记;在 C++ 代码里一般不会直接写 $1011B$ 这种形式(除非当作字符串处理)。

    ---

    2.2 编程里常见前缀:$0b$、$0$、$0x$(重点)



    (1)$0b$:二进制前缀

  • 写法:$0b1011$
  • 解释:这是二进制的 $1011$

  • (2)$0$:八进制前缀

  • 写法:$0123$
  • 解释:这是八进制的 $123$

  • 重要提醒:
    在 C/C++ 中,数字前面如果写了一个 $0$(并且后面还有数字),就会被当作八进制。
    例如:程序里的 $010$ 表示八进制的 $10$,换成十进制是 $8$。

    (3)$0x$:十六进制前缀

  • 写法:$0x2E$、$0xFF$、$0x1A3F$
  • 解释:这是十六进制的数

  • 说明:
    $0x$ 也可以写成 $0X$(大写 $X$);十六进制中可以用 $A\sim F$ 或 $a\sim f$(大小写都可以)。

    ---

    2.3 举个例子


  • $1011B = 0b1011$(都表示二进制 $1011$)
  • $17O = 017$(都表示八进制 $17$)
  • $125D = 125$(都表示十进制 $125$)
  • $2EH = 0x2E$(都表示十六进制 $2E$)

  • ---

    三、整数部分的进制转换



    3.1 十进制 $\rightarrow$ 其他进制(整数)



    方法:除基取余,倒序排列


    将十进制整数 $N$ 转为 $base$ 进制:
    1)$N \div base$ 得到“商”和“余数”。
    2)余数就是结果的最后一位,记录下来。
    3)把商当作新的 $N$,继续除。
    4)当商变为 $0$ 时停止。
    5)把所有余数“从后往前”写出来(倒序),得到结果。

    示例:$13$ 转二进制($base=2$)


    $13 \div 2 = 6$ …… $1$
    $6 \div 2 = 3$ …… $0$
    $3 \div 2 = 1$ …… $1$
    $1 \div 2 = 0$ …… $1$
    倒序:$1101$
    结论:$13$(十进制)$=$ $1101$(二进制)

    ---

    3.2 其他进制 → 十进制(整数)



    一个 $base$ 进制数写成:$a_{n-1}a_{n-2}\cdots a_1a_0$

    ------

    3.2.1 方法 1:按位权展开(从右到左“数字 × 位权”相加)



    规则:
  • 最右边一位的位权是 $base^0$
  • 右数第二位的位权是 $base^1$
  • 右数第三位的位权是 $base^2$
  • ……依次类推

  • 十进制值就是把每一位“数字 $\times$ 位权”相加:
    $$ \text{十进制值}=a_0\cdot base^0+a_1\cdot base^1+a_2\cdot base^2+\cdots+a_{n-1}\cdot base^{n-1} $$

    示例 1:把 $1101$(二进制)转十进制


    这里 $base=2$,从右往左写位权:
  • 最右边 $1$:$1\times 2^0=1$
  • 再往左 $0$:$0\times 2^1=0$
  • 再往左 $1$:$1\times 2^2=4$
  • 最左边 $1$:$1\times 2^3=8$

  • 相加:$8+4+0+1=13$
    结论:$1101_2=13_{10}$

    示例 2:把 $2E$(十六进制)转十进制


    这里 $base=16$,并且 $E=14$

    从右往左:
  • 最右边 $E$:$14\times 16^0=14$
  • 再往左 $2$:$2\times 16^1=32$

  • 相加:$32+14=46$
    结论:$2E_{16}=46_{10}$

    ------

    3.2.2 方法 2:从左到右“乘 base 加当前位”(秦九韶法)



    把 $a_{n-1}a_{n-2}\cdots a_1a_0$ 当成从左到右读入:

    1. 先令 $ans=0$
    2. 每读到一位 $a_i$:

    $$ ans = ans \times base + a_i $$

    3. 读完所有位后,$ans$ 就是十进制值

    本质等价于:
    $$ (((a_{n-1})\cdot base + a_{n-2})\cdot base + a_{n-3})\cdots + a_0 $$

    ------

    示例 3:把 $1101$(二进制)从左到右转十进制


    这里 $base=2$,从左到右读:$1,1,0,1$
  • 初始:$ans=0$
  • 读到 $1$:$ans=0\times 2+1=1$
  • 读到 $1$:$ans=1\times 2+1=3$
  • 读到 $0$:$ans=3\times 2+0=6$
  • 读到 $1$:$ans=6\times 2+1=13$

  • 结论:$1101_2=13_{10}$

    ------

    示例 4:把 $2E$(十六进制)从左到右转十进制


    这里 $base=16$,$E=14$,从左到右读:$2,E$
  • 初始:$ans=0$
  • 读到 $2$:$ans=0\times 16+2=2$
  • 读到 $E(14)$:$ans=2\times 16+14=46$

  • 结论:$2E_{16}=46_{10}$

    四、小数部分的进制转换



    4.1 十进制小数 $\rightarrow$ $base$ 进制小数



    方法:乘基取整,顺序排列


    对十进制小数 $x$($0\le x 1$):
    1)$x \times base$
    2)取“整数部分”作为小数点后的下一位
    3)保留小数部分继续
    4)重复若干次或小数部分为 $0$

    示例:$0.625$(十进制)转二进制($base=2$)


    $0.625 \times 2 = 1.25$,取 $1$,剩 $0.25$
    $0.25 \times 2 = 0.5$,取 $0$,剩 $0.5$
    $0.5 \times 2 = 1.0$,取 $1$,剩 $0$
    结论:$0.625$(十进制)$=$ $0.101$(二进制)

    重要提醒:
    有些小数会“无限循环”,例如 $0.1$(十进制)转二进制不会有限结束。
    因此题目通常会要求:保留 $N$ 位或允许误差。

    ---

    4.2 $base$ 进制小数 $\rightarrow$ 十进制小数



    以二进制为例,小数点后:
  • 第 $1$ 位表示 $\dfrac{1}{2}$
  • 第 $2$ 位表示 $\dfrac{1}{4}$
  • 第 $3$ 位表示 $\dfrac{1}{8}$
  • 以此类推
示例:$0.101$(二进制)转十进制
$= 1\times \dfrac{1}{2} + 0\times \dfrac{1}{4} + 1\times \dfrac{1}{8}$
$= 0.5 + 0 + 0.125$
$= 0.625$

【前置知识点】
1、数学

【后置衔接知识点】
1、位运算

【思维导图】



【题目知识点分类】