1. 程式人生 > >【Java篇02】二進位制、十進位制、十六進位制之間的相互轉換

【Java篇02】二進位制、十進位制、十六進位制之間的相互轉換

1. 二進位制 -> 十六進位制

eg: 二進位制數 1001 1010;
通過1248賦值法,即

1001 1010
8421 8421
---------------
1+8=9 , 2+8=10;

即二進位制數1001 1010,對應十六進位制的數為 ox 9A(A對應10);

2. 二進位制 -> 十進位制

流程是:二進位制 -> 十六進位制 -> 十進位制
eg: 二進位制數 1001 1010;
首先通過1248賦值法,二進位制轉十六進位制,即

1001 1010
8421 8421
---------------
1+8=9 , 2+8=10;

即十六進位制的數為 ox 9A(A對應10);

然後十六進位制轉十進位制:

ox 9A = 9x16 + 10 = 154;

所以,二進位制1001 1010轉換成十進位制就是154。

3. 十進位制 -> 二進位制

流程是:通過連續對 2 取商和餘,直到商為0為止,即
eg:十進位制數154

154/2 = 77……0
77/2 = 38……1
38/2 = 19……0
19/2 = 9 ……1
9/2 = 4 ……1
4/2 = 2 ……0
2/2 = 1 ……0
1/2 = 0 ……1

將餘從下往上,倒序排列,得到1001 1010
所以,十進位制的154,對應二進位制數為1001 1010。

4. 十進位制 -> 十六進位制

流程是:通過連續對 16 取商和餘,直到商為0為止,即
eg:十進位制數1610

1610/16=100……10(A);
100 /16= 6 ……4;
6 /16= 0 ……6;

將餘從下往上,倒序排列,得到64A
所以,十進位制的1610,對應十六進位制的ox 64A

5. 十六進位制 -> 二進位制

流程是:將十六進位制的每一個數都轉換成4位二進位制數
eg: 十六進位制的ox 64A

A=10=8+2;
4=4;
6=4+2;

那麼對應的二進位制數就是:ob 0110 0100 1010

6. 十六進位制 -> 十進位制

流程是:將十六進位制的每一個數都乘以16的某個冪
eg: 十六進位制的ox 64A

6 x 16² + 4 x 16¹ + 10 x 16º = 1536 + 64 + 10 = 1610;

那麼對應的十進位制數就是:1610。