各类进制之间的转换关系

进制本质:逢 R 进 1,R 就是基数;每一位有位权 R^i

位权:从右往左,下标从 0 开始。
例如十进制 123 = 1102+2*101+310^0

1. 四种常用进制总览
表格
进制 | 基数 | 数码 | 书写前缀 | 进位规则
二进制 Binary | 2 | 0、1 | 0b(Java) 逢 2 进 1
八进制 Octal | 8 | 0‑7 | 0(数字 0) 逢 8 进 1
十进制 Decimal | 10 | 0‑9 | 无 | 逢 10 进 1
十六进制 Hex | 16 | 0‑9,A‑F(a‑f)| 0x | 逢 16 进 1

十六进制:A=10,B=11,C=12,D=13,E=14,F=15

快速对应表(0‑15)
表格
十进制 二进制 八进制 十六进制
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1102 16 E
15 1111 17 F

进制互相转换
① R 进制 → 十进制:按权展开求和
公式:每一位 × 基数的位权,全部相加。

例:二进制 1011 →十进制
123+0*22+121+1*20 =8+0+2+1=11

例:十六进制 0x12 →十进制
1×161+2×160=16+2=18

② 十进制 → R 进制:除基取余法
规则:除以基数,记录余数;商继续除,直到商为 0;余数倒序写结果

示例:十进制 18 → 二进制
plaintext
18 /2 =9 余 0
9 /2 =4 余 1
4 /2 =2 余 0
2 /2 =1 余 0
1 /2 =0 余 1
余数倒序:10010
18(10) = 10010(2)
十进制转十六进制:除以 16 取余
18 ÷16 =1 余 2;1÷16=0 余 1 →结果 0x12

③ 二进制 ↔ 八、十六进制(分组法,考试高频)
2、8、16 都是 2 的幂,可以直接分组,不用算十进制中转。

二进制 ↔ 十六进制:4 位一组(2^4=16)
从右往左,每 4 位分开,不足左边补 0。
例:10010 →补成 0001 0010 → 1 2 →0x12

二进制 ↔ 八进制:3 位一组(2^3=8)
从右往左,每 3 位分组,左边补 0。
例:10010 →补 010 010 →2 2 →八进制022

✨记忆:4 位对应 16 进制;3 位对应 8 进制

④ BCD 码(特殊编码,不是进制!非常容易混淆)
⚠️ BCD 不是进制!!

  1. 二进制、八、十、十六进制是数值表示;
  2. BCD 是十进制数字的二进制编码方案。
  3. 8421‑BCD:4bit 存 1 位十进制 0‑9;1010‑1111非法。
  4. 压缩 BCD:1 字节 8bit 存 2 位十进制数字
  5. 0x12作为 BCD:代表十进制 12
  6. 0x12作为十六进制数:代表十进制 18
    👉这就是你编程题的根源区别!

表格
写法 当做十六进制数值 当做 BCD 编码
0x12 18 12

转换公式(做题用):
输入错误值 n(把 BCD 当成十六进制算出的十进制)
正确BCD值 = (n /16)*10 + (n%16)

BCD 加法特点:二进制相加之后,每 4 位 > 9 或者产生进位,需要+6 修正。

易错对比(必看)

  1. 0x12:十六进制数值18;BCD编码代表 12。两个概念!
  2. 八进制前缀是数字0,012八进制 =10 十进制;不要和 0x 搞混。
  3. 分组转换二进制到 16/8 进制:一定从最右边开始分组,左边补 0,不是右边补。
  4. 除基取余:最后结果余数倒过来写,不要顺着写!
  5. BCD 不是进制,是编码,存在非法码 1010~1111。

转换快速记忆口诀

  1. R 转十:按权展开做乘法求和
  2. 十转 R:除基取余,余数倒排
  3. 二↔十六:四位一组
  4. 二↔八:三位一组
  5. BCD:4bit 存 1 位十进制,加法大于 9 要加 6 修正

常见考题类型

  1. 进制互相转换计算(手算)
  2. 判断 BCD 码是否合法
  3. BCD 加法带修正
  4. BCD 错误还原(刚才那道编程题)
  5. Java 中字面量书写:0b10二进制、012八进制、0x12十六进制

posted on 2026-10-07 09:39  谢天佑  阅读(23)  评论(0)    收藏  举报