1196 字
6 分钟
进制转换

进制转换#

计算机只认识 0 和 1,所以我们用二进制;

人类习惯 0~9,所以用十进制;

为了书写方便,又引入十六进制(0-9 + A-F)。

现在,我们要学会在这三种之间自由切换。


一、十进制转二进制#

先花 5 秒选路线,再动手:

场景推荐算法
数字 ≤ 255 且需要口算减权法(最快)
数字很大 / 要写程序除 2 取余法(最稳)

✅ 主干:减权法(口算 0–255 专用)#

口诀:
从高权到低权,能减写 1 减,不能写 0 跳。

减权法#

口诀:“从高权到低权,能减写1减,不能写0跳。”

在进制表示中,每一位都有一个固定的“权重”,称为权值。

例如,在二进制中,从右往左第 0 位权值是 20=12^0=1,第 1 位是 21=22^1=2,第 2 位是 22=42^2=4,依此类推。

所以 8 位二进制的权值从左到右是:128, 64, 32, 16, 8, 4, 2, 1。

具体 3 步:

  1. 列权:128 64 32 16 8 4 2 1(固定顺序)
  2. 逐位判:
    • 当前余数 ≥ 权值 → 该位写 1,余数减去与之相比的数
    • 当前余数 < 权值 → 该位写 0,余数不变
  3. 按顺序写下 0/1,就是二进制 如100来进行运算:
100 < 128(权值) 所以该位为0,并且不进行减去操作
100 > 64(权值) 所以该位为1,并且减去64
36(余数) > 32 所以该位为1,并且减去32
后面省略,所以100二进制位为01100100

实际操作 以 192 为例:

权值序列:128 64 32 16 8 4 2 1
——————————————————————————————
192 ≥ 128 → 第8位写 1,余 192−128 = 64
64 ≥ 64 → 第7位写 1,余 64−64 = 0
0 < 32 → 第6位写 0,余 0
0 < 16 → 第5位写 0,余 0
0 < 8 → 第4位写 0,余 0
0 < 4 → 第3位写 0,余 0
0 < 2 → 第2位写 0,余 0
0 < 1 → 第1位写 0,余 0
结果:`11000000`

方法二:除 2 取余,倒序读#

你不断用数字除以 2,记录每次的余数,直到商为 0。最后把余数从下往上读,就是二进制。

举个栗子(n = 13):

除法商余数13÷2616÷2303÷2111÷201\begin{array}{r|r|r} \text{除法} & \text{商} & \text{余数} \\ \hline 13 \div 2 & 6 & 1 \\ 6 \div 2 & 3 & 0 \\ 3 \div 2 & 1 & 1 \\ 1 \div 2 & 0 & 1 \\ \end{array}1310=1101213_{10} = 1101_2

所以:

所以十进制 13 等于二进制 1101(写作 1310=1101213_10=1101_2)。

二、二进制转十进制#

按位乘权值再相加。

二进制从右往左,权值依次是:20=1, 21=2, 22=4, 23=8, ...2^0=1,\ 2^1=2,\ 2^2=4,\ 2^3=8,\ ...

举个栗子:1101

位(从右)3210
二进制位1101
权值8421
计算1×81×40×21×1

然后再 8+4+0+1=138+4+0+1=13 那么1101转成十进制就是13啦


​

三、十进制 ↔ 十六进制#

你可以:

  1. 先转二进制,再转十六进制(推荐初学者)
  2. 或直接用除 16 取余法
十进制十六进制
11
22
33
44
55
66
77
88
99
10A
11B
12C
13D
14E
15F

举个栗子:200 转十六进制

步骤计算过程商余数十六进制对应位
1200 ÷ 161288
212 ÷ 16012C(因为 12 → C)

方法一:除16取余法(推荐用于整数) 步骤:

将十进制数不断除以 16,记录每次的余数。 余数若为 10~15,则分别用 A~F 表示。 将所有余数倒序排列,即为对应的十六进制数。 例子:将 200 转换为十六进制

200 ÷ 16 = 12 余 8 12 ÷ 16 = 0 余 12 → C → 余数倒序:C 8 → 十六进制为 C8 方法二:利用二进制作为中介(适合熟悉二进制的人) 步骤:

先将十进制数转为二进制。 从右往左,每 4 位二进制一组(不足补 0)。 每组转为对应的十六进制数字(0000=0, …, 1111=F)。 例子:200 → 二进制是 11001000

补齐为 4 位一组:1100 1000 对应十六进制:C 8 → C8

反过来,C8 转十进制:
C = 12,8 = 8
→ 12×161+8×160=192+8=20012 \times 16^1 + 8 \times 16^0 = 192 + 8 = 200

十六进制转十进制 例如2FB1 先将2FB1每个值转换成十进制

2=2
F=15
B=11
1=1

2×163+1×162+11×161+1×160=122092\times16^3+1\times16^2+11\times16^1+1\times16^0=12209

即 2×163+F×162+B×161+1×160=122092\times16^3+F\times16^2+B\times16^1+1\times16^0=12209

总结#

附上二进制,十进制,十六进制对照表

二进制十进制十六进制
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F
进制转换
https://mikufans.yuzhiyuan.top/posts/进制转换/
作者
遇缘
发布于
2025-12-12
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 296 天

部分内容可能已过时