各类进制之间的转换关系
进制本质:逢 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 不是进制!!
- 二进制、八、十、十六进制是数值表示;
- BCD 是十进制数字的二进制编码方案。
- 8421‑BCD:4bit 存 1 位十进制 0‑9;1010‑1111非法。
- 压缩 BCD:1 字节 8bit 存 2 位十进制数字
- 0x12作为 BCD:代表十进制 12
- 0x12作为十六进制数:代表十进制 18
👉这就是你编程题的根源区别!
表格
写法 当做十六进制数值 当做 BCD 编码
0x12 18 12
转换公式(做题用):
输入错误值 n(把 BCD 当成十六进制算出的十进制)
正确BCD值 = (n /16)*10 + (n%16)
BCD 加法特点:二进制相加之后,每 4 位 > 9 或者产生进位,需要+6 修正。
易错对比(必看)
- 0x12:十六进制数值18;BCD编码代表 12。两个概念!
- 八进制前缀是数字0,012八进制 =10 十进制;不要和 0x 搞混。
- 分组转换二进制到 16/8 进制:一定从最右边开始分组,左边补 0,不是右边补。
- 除基取余:最后结果余数倒过来写,不要顺着写!
- BCD 不是进制,是编码,存在非法码 1010~1111。
转换快速记忆口诀
- R 转十:按权展开做乘法求和
- 十转 R:除基取余,余数倒排
- 二↔十六:四位一组
- 二↔八:三位一组
- BCD:4bit 存 1 位十进制,加法大于 9 要加 6 修正
常见考题类型
- 进制互相转换计算(手算)
- 判断 BCD 码是否合法
- BCD 加法带修正
- BCD 错误还原(刚才那道编程题)
- Java 中字面量书写:0b10二进制、012八进制、0x12十六进制
浙公网安备 33010602011771号