电脑内部数据都是使用 0 与 1 来储存的,这种只有 0 与 1 两种状态的系统,相当于二进制 (数字系统)。 人类最常用的为十进制(因为人类具有十根手指而产生的),也是目前最常用的系统。 文章会说明目前较常使用的二、八、十与十六进制,及进制间转换的计算方式教学。
进制( 数字系统)
概念
二进制 (Binary,bin)
基数为2的系统:逢2进制。
数字符号:0, 1。
八进制 (Octal,oct)
基数8的系统:逢8进位。
数字符号:0, 1, 2, 3, 4, 5, 6, 7。
十进制 (Decimal,dec)
基数10的系统:逢10进位。
数字符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 9。
十六进制 (Hexadecimal,hex)
基数16的系统:逢16进制。
数字符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 9 与 10 → A, 11 → B, 12 → C, 13 → D, 14 → E, 15 → F。
对照表
十进位 | 二进位 | 八进制 | 十六进制 |
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 | 1110 | 16 | E |
15 | 1111 | 17 | F |
有效位
最高有效位 (MSB):表示最左边的位 → 1010。
最低有效位 (LSB):表示最右边的位 → 1010。
进制(数字系统)转换规则
十进制转换成其他进位
整数 → 除法 :
【十进位 (整数) / 欲转换进位数】一直除到商数为 0,再依序【由下往上】取出余数。
小数 → 乘法 :
【十进位 (小数) * 欲转换进位数】一直乘到小数为 0,再依序【由上往下】取出整数。
其他进制转换成十进位
以二进制为例:1101.101(2)。
整数 → 乘法 :
以小数点为中心【由右至左】累加次方,在依【数字 * 原本进位数次方】。
1101 → 13 12 01 10 → (1 * 23) + (1 * 22) + (0 * 21) + (1 * 20)。
小数 → 乘法 :
以小数点为中心【由左至右】累加负次方,在依【数字 * 原本进位数负次方】。
.101 → 1-1 0-2 1-3 → (1 * 2-1) + (0 * 2-2) + (1 * 2-3)。
次方计算常见问题
0 * 2 = 0,0 * 任何数都等于 0。
20 = 1,任何底数的 0 次方都等于 1。
22 = 2 * 2,多少次方则依此类推。
2-2 = 1 / (2 * 2) = 0.25,多少次方则依此类推。
进制(数字系统)转换
二进制与十进位的转换
十进制 → 二进制
范例 | 计算公式 |
12(10) = 1100(2) | 12 / 2 = 6 餘數 0 ↑ => 1100(2) 6 / 2 = 3 餘數 0 | 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | |
15.625(10) = 1111.101(2) | 整数部分小数部份 15 / 2 = 7 餘數 1 ↑ => 1111(2) 7 / 2 = 3 餘數 1 | 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 0.625 * 2 = 1.250 取整數 1 | 0.250 * 2 = 0.500 取整數 0 | 0.500 * 2 = 1.000 取整數 1 ↓ => 101(2) |
二进制 → 十进制
范例 | 计算公式 |
101(2) = 5(10) | (1 * 22) + (0 * 21) + (1 * 20) = 5(10) |
1101.101(2) = 13.625(10) | 整数部分小数部份 (1 * 23) + (1 * 22) + (0 * 21) + (1 * 20) = 13(10) (1 * 2-1) + (0 * 2-2) + (1 * 2-3) = 0.625(10) |
八进制与十进位的转换
十进制 →八进制
范例 | 计算公式 |
395(10) = 613(8) | 395 / 8 = 49 餘數 3 ↑ => 613(8) 49 / 8 = 6 餘數 1 | 6 / 8 = 0 餘數 6 | |
17.25(10) = 21.2(8) | 整数部分小数部份 17 / 8 = 2 餘數 1 ↑ => 21(8) 2 / 8 = 0 餘數 2 | 0.25 * 8 = 2.00 取整數 2 ↓ => 0.2(8) |
八进制 → 十进制
范例 | 计算公式 |
26(8) = 22(10) | (2 * 81) + (6 * 80) = 22(10) |
162.4(8) = 114.5(10) | 整数部分小数部份 (1 * 82) + (6 * 81) + (2 * 80) = 114(10) (4 * 8-1) = 0.5(10) |
十六进制与十进位的转换
十进制 → 十六进制
范例 | 计算公式 |
2748(10) = ABC(16) | 2748 / 16 = 171 餘數 12 ↑ => ABC(16) 171 / 16 = 10 餘數 11 | 10 / 16 = 0 餘數 10 | |
799.375(10)= 31F.6(16) | 整数部分小数部份 799 / 16 = 49 餘數 15 ↑ => 31F(16) 49 / 16 = 3 餘數 1 | 3 / 16 = 0 餘數 3 | 0.375 * 16 = 6.000 ↓ => 0.6(16) |
十六进制 → 十进制
范例 | 计算公式 |
4EB(16) = 1259(10) | (4 * 162) + (14 * 161) + (11 * 160) = 1259(10) |
B2.5(16) = 178.3125(10) | 整数部分 (11 * 161) + (2 * 160) = 178(10) 小数部份 (5 * 16-1) = 0.3125(10) |
八进制与二进位的转换
8 = 23 所以八进制能以3个位数的二进制表示,将每一个八进制数字都转成二进制数字。
八进制 → 二进制
计算结果不足 3 个位数则【前面】补 0。
范例 | 计算公式 |
7 6 . 2 1 (8) = 111 110 . 010 001 (2) | 整数第二位数7整数第一位数6小数第一位数2小数第二位数1 7 / 2 = 3 餘數 1 ↑ => 111(2) 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 6 / 2 = 3 餘數 0 ↑ => 110(2) 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 2 / 2 = 1 餘數 0 ↑ => 010(2) 1 / 2 = 0 餘數 1 | 1 / 2 = 0 餘數 1 ↑ => 001(2) |
二进制 → 八进位
以小数点为基准,分向左【整数】右【小数】两边,每 3 个位数为一组。
【整数】不足 3 个位数则【前面】补 0。
【小数】不足 3 个位数则【后面】补 0。
范例 | 计算公式 |
101 001 110 . 01 (2) = 516.2(8) | 整数左侧三位数101整数中间三位数001整数右侧三位数110小数三位数010 (1 * 22) + (0 * 21) + (1 * 20) = 5(8) (0 * 22) + (0 * 21) + (1 * 20) = 1(8) (1 * 22) + (1 * 21) + (0 * 20) = 6(8) (0 * 22) + (1 * 21) + (0 * 20) = 2(8) |
十六进制与二进位的转换
16 = 24 所以十六进制可以4个位数的二进制表示,将每一个十六进制数字都转成二进制数字。
十六进制 → 二进制
计算结果不足 4 个位数则【前面】补 0。
范例 | 计算公式 |
5 B D 1 . B (16) = 0101 1011 1101 0001 . 1011 (2) | 整数第四位数5整数第三位数B→11整数第二位数D→13整数第一位数1小数第一位数B→11 5 / 2 = 2 餘數 1 ↑ => 0101(2) 2 / 2 = 1 餘數 0 | 1 / 2 = 0 餘數 1 | 11 / 2 = 5 餘數 1 ↑ => 1011(2) 5 / 2 = 2 餘數 1 | 2 / 2 = 1 餘數 0 | 1 / 2 = 0 餘數 1 | 13 / 2 = 6 餘數 1 ↑ => 1101(2) 6 / 2 = 3 餘數 0 | 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 1 / 2 = 0 餘數 1 ↑ => 0001(2) 11 / 2 = 5 餘數 1 ↑ => 1011(2) 5 / 2 = 2 餘數 1 | 2 / 2 = 1 餘數 0 | 1 / 2 = 0 餘數 1 | |
二进制 → 十六进制
以小数点为基准,分向左【整数】右【小数】两边,4 个位数为一组。
【整数】不足 4 个位数则【前面】补 0。
【小数】不足 4 个位数则【后面】补 0。
范例 | 计算公式 |
1 1101 0011 . 101 (2) = 1D3. A(16) | 整数左侧四个位数0001整数中间四个位数1101整数右侧四个位数0011小数三个位数1010 (1 * 20) = 1(16) (1 * 23) + (1 * 22) + (0 * 21) + (1 * 20) = 13 → D(16) (0 * 23) + (0 * 22) + (1 * 21) + (1 * 20) = 3(16) (1 * 23) + (0 * 22) + (1 * 21) + (0 * 20) = 10 → A(16) |
十六进制与八进位的转换
必须经过 2 次转换:
八与十六进制都先转换为二进制。
再转换为八或十六进制。
十六进制 →八进制
范例 | 计算公式 |
C 9 . A (16) = 11001001.101(2) 11 001 001 . 101 (2) = 311.5(8) | 先转换为二进位 整数第二位C→12整数第一位9小数第一位A→10 12 / 2 = 6 餘數 0 ↑ => 1100(2) 6 / 2 = 3 餘數 0 | 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 9 / 2 = 4 餘數 1 ↑ => 1001(2) 4 / 2 = 2 餘數 0 | 2 / 2 = 1 餘數 0 | 1 / 2 = 0 餘數 1 | 10 / 2 = 5 餘數 0 ↑ => 1010(2) 5 / 2 = 2 餘數 1 | 2 / 2 = 1 餘數 0 | 1 / 2 = 0 餘數 1 | |
再转换为八进制 (3 个位数为一组) 整数左侧三位数011整数中间三位数001整数右侧三位数001小数三位数101 (0 * 22) + (1 * 21) + (1 * 20) = 3(8) (0 * 22) + (0 * 21) + (1 * 20) = 1(8) (0 * 22) + (0 * 21) + (1 * 20) = 1(8) (1 * 22) + (0 * 21) + (1 * 20) = 5(8) |
八进制 → 十六进制
范例 | 计算公式 |
3 6 . 6 5 (8) = 11110.110101(2) 1 1110 . 1101 01 (2) = 1E. D4(16) | 先转换为二进位 整数第二位3整数第一位6小数第一位6小数第二位5 3 / 2 = 1 餘數 1 ↑ => 011(2) 1 / 2 = 0 餘數 1 | 6 / 2 = 3 餘數 0 ↑ => 110(2) 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 6 / 2 = 3 餘數 0 ↑ => 110(2) 3 / 2 = 1 餘數 1 | 1 / 2 = 0 餘數 1 | 5 / 2 = 2 餘數 1 ↑ => 101(2) 2 / 2 = 1 餘數 0 | 1 / 2 = 0 餘數 1 | |
再转换为十六进制 (4 个位数为一组) 整数左侧四位数0001整数右侧四位数1110小数左侧四位数1101小数右侧四位数0100 (0 * 23) + (0 * 22) + (0 * 21) + (1 * 20) = 1(16) (1 * 23) + (1 * 22) + (1 * 21) + (0 * 20) = 14 → E(16) (1 * 23) + (1 * 22) + (0 * 21) + (1 * 20) = 13 → D(16) (0 * 23) + (1 * 22) + (0 * 21) + (0 * 20) = 4(16) |