五分鐘教會你任何進位制之間的互相轉換
什麼是進位制?
進位制也就是進位制,是人們規定的一種進位方法。 對於任何一種進位制—X進位制,就表示某一位置上的數運算時是逢X進一位。 十進位制是逢十進一,十六進位制是逢十六進一,二進位制就是逢二進一,以此類推,x進位制就是逢x進位。
常見的進位制
- 二進位制 Binary
- 八進位制 Octal
- 十進位制 Decimal
- 十六進位制 Hexadecimal
對應關係
二進位制 | 八進位制 | 十進位制 | 十六進位制 |
---|---|---|---|
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 |
進位制之間的轉換
轉換關係
- 十轉二
- 十轉八
- 十轉十六
- 二轉八
- 二轉十
- 二轉十六
- 十六轉二
- 十六轉八
- 十六轉十
- ……
這麼多進位制之間的轉換,看完以後就再也不打算學了!其實根本沒有那麼複雜,上面的轉換關係可以精簡成如下關係:
- 十轉其他
- 其他轉十
十轉X
整數部分,對X短除取餘倒序
小數部分,與X相乘取整正序
X轉十
按權展開求和
什麼是權?
例如十進位制數 111,三個“1”放在不同的位置,所代表的意義也不同。從左到右分別為 100,10,1。還可以表示為:
1×102 ,1×101 ,1×100 。
這裡面10x 就叫做權,二進位制則為2x ,八進位制為8x ,以此類推。
OK,現在是不是簡單了。到這裡可能有人會有疑問了,你只說了十進位制和其他進位制之間的轉換,那其他進位制之間的轉換呢?彆著急往下看:
我們以二進位制和十六進位制的轉換為例,首先大家看一下上面那個對應關係表,很容易就會發現一個規律——四位二進位制數剛剛對應一位十六進位制數所表示的範圍(二進位制的0000-1111對應十六進位制的0-F)。OK知道這個規律以後,一切都變得明瞭了。那麼將9F(H)轉成二進位制就可以分別將9和F轉成四位二進位制數,然後組合起來就好了,如下圖:
那麼9F(H)轉成二進位制數就是10011111,二進位制轉十六進位制就是先講二進位制數四位一組的規則分好組,然後轉成對應的十進位制數(超過十的用A-F表示)。八進位制和二進位制的轉換也是這個規律,只不過對應關係變成了三位二進位制數對應一位八進位制數而已。
PS:八進位制和十六進位制之間不能直接轉換,八進位制需要先轉成二進位制或十進位制,在有對應的二進位制或十進位制轉成十六進位制,反過來也一樣。
還沒想好
十進位制轉其他進位制的短除法我覺得還是有點麻煩,有沒有更簡單的方法呢?當然有啦,哈哈哈!其實方法很簡單,就三個字——找節點。
節點表
二進位制的權 | 二進位制數 | 十進位制 |
---|---|---|
|
1 | 1 |
|
10 | 2 |
|
100 | 4 |
|
1000 | 8 |
|
10000 | 16 |
|
100000 | 32 |
|
1000000 | 64 |
|
10000000 | 128 |
|
100000000 | 256 |
|
1000000000 | 512 |
210 | 10000000000 | 1024 |
這個表有什麼用呢?比如我們要將578轉成二進位制,我們不用短除法,我們看看上面表中與578最相近的數是多少?很容易就找到512,它是
十轉八和十轉十六同理,不再贅述了。
總結
通過上面的分析,我們知道只要掌握了十進位制和任何一種進位制之間的轉換,那麼我們就掌握了所有進位制之間的互相轉換了。而且我們還知道下面的規則:
十轉X
整數部分,對X短除取餘倒序
小數部分,與X相乘取整正序還可以通過找節點的方式進一步簡化
X轉十
按權展開求和