二、八、十、十六进制(数字系统)转换教学

电脑内部数据都是使用 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 次转换:

  1. 八与十六进制都先转换为二进制。

  1. 再转换为八或十六进制。

十六进制 →八进制

范例

计算公式

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)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值