對於位元轉換比較不熟悉,特別去學習二進位、八進位、十進位、十六進位之間要如何相互轉換,下面是我統整出的概念跟運算。
電腦內部資料都是使用 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)
二進位 | 八進位 | 十進位 | 十六進位 |
---|---|---|---|
0000 | 0 | 0 | 0 |
0001 | 1 | 1 | 1 |
0010 | 2 | 2 | 2 |
0011 | 3 | 3 | 3 |
0100 | 4 | 4 | 4 |
0101 | 5 | 5 | 5 |
0110 | 6 | 6 | 6 |
0111 | 7 | 7 | 7 |
1000 | 10 | 8 | 8 |
1001 | 11 | 9 | 9 |
1010 | 12 | 10 | A |
1011 | 13 | 11 | B |
1100 | 14 | 12 | C |
1101 | 15 | 13 | D |
1110 | 16 | 14 | E |
1111 | 17 | 15 | F |
整數 用 除法
十進位 / 欲轉換進位數 ,一直除到商數為 0,再依序 由下往上 取出餘數
小數 用 乘法
十進位 * 欲轉換進位數 ,一直乘到小數為 0,再依序 由上往下 取出整數
整數 用 乘法
以小數點為中心 由右至左 累加次方,在依 數字 * 原本進位數次方
小數 用 乘法
以小數點為中心 由左至右 累加 負次方,在依 數字 * 原本進位數負次方
整數 由下往上
15(10) = 1111(2)
15 / 2 = 7 餘數 1 ↑ => 1111(2)
07 / 2 = 3 餘數 1 |
03 / 2 = 1 餘數 1 |
01 / 2 = 0 餘數 1 |
整數 + 餘數
13.625(10) = 1101.101(2)
整數
13 / 2 = 6 餘數 1 ↑ => 1101(2)
06 / 2 = 3 餘數 0 |
03 / 2 = 1 餘數 1 |
01 / 2 = 0 餘數 1 |
餘數 由上往下 一直乘到小數為 0
0.625 * 2 = 1.250 取整數 1 |
0.250 * 2 = 0.500 取整數 0 |
0.500 * 2 = 1.000 取整數 1 ↓ => 101(2)
整數 由右至左
1101(2) = 15(10)
(1 * 2^3) + (1 * 2^2) + (1 * 2^1) + (1 * 2^0) = 8 + 4 + 2 + 1 = 15(10)
整數 + 餘數 由左至右 累加 負次方
1101.101(2) = 13.625(10)
整數
(1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (1 * 2^0) = 8 + 4 + 0 + 1 = 13(10)
餘數
(1 * 2^-1) + (0 * 2^-2) + (1 * 2^-3) = 0.5 + 0 + 0.125 = 0.625(10)
整數 由下往上
358(10) = 546(8)
358 / 8 = 44 餘數 6 ↑ => 546(8)
044 / 8 = 05 餘數 4 |
005 / 8 = 00 餘數 5 |
整數 + 餘數
39.75(10) = 47.6(8)
整數
39 / 8 = 4 餘數 7 ↑ => 47(8)
04 / 8 = 0 餘數 4 |
餘數 由上往下 一直乘到小數為 0
0.75 * 8 = 6.00 取整數 6 ↓ => 0.6(8)
整數 由右至左
546(8) = 358(10)
(5 * 8^2) + (4 * 8^1) + (6 * 8^0) = 320 + 32 + 6 = 358(10)
整數 + 餘數 由左至右 累加 負次方
47.6(8) = 39.75(10)
整數
(4 * 8^1) + (7 * 8^0) = 32 + 7 = 39(10)
餘數
(6 * 8^-1) = 0.75(10)
整數 由下往上
1579(10) = 62B(16)
1579 / 16 = 98 餘數 11 ↑ => 62B(16)
0098 / 16 = 06 餘數 02 |
0006 / 16 = 00 餘數 06 |
整數 + 餘數
339.625(10) = 153.A(16)
整數
339 / 16 = 21 餘數 3 ↑ => 153(16)
021 / 16 = 01 餘數 5 |
001 / 16 = 00 餘數 1 |
餘數 由上往下 一直乘到小數為 0
0.625 * 16 = 10.0 取整數 10 ↓ => 0.A(16)
整數 由右至左
62B(16) = 1579(10)
(6 * 16^2) + (2 * 16^1) + (11 * 16^0) = 1536 + 32 + 11 = 1579(10)
整數 + 餘數 由左至右 累加 負次方
153.A(16) = 339.625(10)
整數
(1 * 16^2) + (5 * 16^1) + (3 * 16^0) = 256 + 80 + 3 = 339(10)
餘數
(10 * 16^-1) = 0.625(10)
10100110.01(2) = 246.2(8)
整數
0 10
(0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 0 + 2 + 0 = 2(8)
100
(1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 4 + 0 + 0 = 4(8)
110
(1 * 2^2) + (1 * 2^1) + (0 * 2^0) = 4 + 2 + 0 = 6(8)
小數
01 0
(0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 0 + 2 + 0 = 2(8)
246.2(8) = 10100110.01(2)
整數
2
2 / 2 = 1 餘數 0 ↑ => 010(2)
1 / 2 = 0 餘數 1 |
4
4 / 2 = 2 餘數 0 ↑ => 100(2)
2 / 2 = 1 餘數 0 |
1 / 2 = 0 餘數 1 |
6
6 / 2 = 3 餘數 0 ↑ => 110(2)
3 / 2 = 1 餘數 1 |
1 / 2 = 0 餘數 1 |
小數
2
2 / 2 = 1 餘數 0 ↑ => 0.010(2)
1 / 2 = 0 餘數 1 |
11001001.101(2) = C9.A(16)
整數
1100
(1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 8 + 4 + 0 + 0 = 12 = C(8)
1001
(1 * 2^3) + (0 * 2^2) + (0 * 2^1) + (1 * 2^0) = 8 + 0 + 0 + 1 = 9(8)
小數
101 0
(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 8 + 0 + 2 + 0 = 10 = A(8)
C9.A(16) = 11001001.101(2)
整數
C
12 / 2 = 6 餘數 0 ↑ => 1100(2)
06 / 2 = 3 餘數 0 |
03 / 2 = 1 餘數 1 |
01 / 2 = 0 餘數 1 |
9
9 / 2 = 4 餘數 1 ↑ => 1001(2)
4 / 2 = 2 餘數 0 |
2 / 2 = 1 餘數 0 |
1 / 2 = 0 餘數 1 |
小數
A
10 / 2 = 5 餘數 0 ↑ => 0.1010 (2)
05 / 2 = 2 餘數 1 |
02 / 2 = 1 餘數 0 |
01 / 2 = 0 餘數 1 |
必須經過 2 次轉換:
246.2(8) = C9.A(16)
246.2(8) 先轉換為二進位
-> 10100110.01(2)
-> 再轉換為十六進位 C9.A(16)
整數
1100
(1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 8 + 4 + 0 + 0 = 12 = C(8)
1001
(1 * 2^3) + (0 * 2^2) + (0 * 2^1) + (1 * 2^0) = 8 + 0 + 0 + 1 = 9(8)
小數
101 0
(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 8 + 0 + 2 + 0 = 10 = A(8)
C9.A(16) = 246.2(8)
C9.A(16) 先轉換為二進位
-> 11001001.101(2)
-> 再轉換為八進位 246.2(8)
整數
0 10
(0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 0 + 2 + 0 = 2(8)
100
(1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 4 + 0 + 0 = 4(8)
110
(1 * 2^2) + (1 * 2^1) + (0 * 2^0) = 4 + 2 + 0 = 6(8)
小數
01 0
(0 * 2^2) + (1 * 2^1) + (0 * 2^0) = 0 + 2 + 0 = 2(8)
下一篇文章會把線上課程的Java Script Basics 1 結束。