您好,登錄后才能下訂單哦!
十進制、二進制、十六進制以及八進制,這些數制之間如何相互轉換?針對這個問題,今天小編總結這篇有關進制轉換的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。
首先來說我們最熟悉的十進制。十進制計數法有10個原始的數字,分別是0-9,當我們想表示一個比9還大1的數字時,1個數位就不夠用了,必須用兩位數來表示,就是10,再比10大1的數是11...以此類推這樣就能表示出任意大的數字。
而計算機中使用的二進制計數法,二進制計數法只有兩個原始數字,就是0和1,想表示比1還大1的數字就需要用兩位數來表示,就是10,之后是11,再之后是100...二進制計數法中最大的數字就是1,再增加的話就要進位了。這樣以此類推也能表示任意一個數字。
通過學習二進制計數法,想必大家已經知道八進制數的特點了,那就是總共有8個原始數字,分別是0-7,當表示比7還大1的數字時,就必須進位了。
那么再來說說十六進制計數法。十六進制計數法中,有16個原始數字,前10個原始數字我們就用0-9來表示,但我們習慣使用的阿拉伯數字只有0-9這10個數字,現在還差6個原始數字,怎么辦呢?我們就用字母去代替,這樣的話第11個原始數字就A,第12個原始數字就是B,以此類推,第16個原始數字就是F。這個F換算成10進制數其實就是15。當表示比F還要大1的數字,就需要進位了,所以F再向后數就是10,11...小伙伴們可能非常不習慣16進制的技術方法,因為突然跑出來一些字母來表示一個數字,其實用多了自然也就習慣了。
下面我們來說說這些數制之間如何相互轉換。剛才提到的4種進制的數字,相互轉換的話有12種情況,請看下圖:
從這幅圖片上大家可以看到,各種數制之間相互轉換情況的所有情形:四種數制之間相互連線,總共可以連12條線。很多小伙伴的第一反應就是:這么多種情況,又要記很多轉換規則。其實大可不必擔心,我們可以把這12中情況分成3種類型,并且掌握每種類型的算法就可以了。12種情況可以分成以下三類
以上算式運算得到的值是168,所以1、6和8這3個原始數字排列起來就能表示168。
這里需要強調一個細節,因為我們現在討論的是10進制的數字,這三個原始數字都是乘以以10為底的n次方。按照這個原理,如果討論的是2進制數字,那么計算一個數就應該是原始數字乘以以2為底的n次方,然后再把各個數字相加,最后就能得出這個數字的具體值了,比如一個二進制數101,按照剛才的算法,可以把101分解成以下形式:
以上算式運算得到的值是5。這就是二進制轉換為10進制數的基本原理。
同樣的,我們也可以把十六進制和八進制的數轉換為十進制,比如十六進制的數1AF,可以分解成如下形式:
我們在運算時把A和F直接替換成對應的十進制數10和15,以上算式運算最終得到的十進制數就是431。通過幾個例子,相信大家已經掌握了其他進制的數轉換為十進制數的算法。這個算法的套路就是把各個位上的數字與M為底的n-1次方相乘,然后把相乘的結果都加起來,需要注意的是:幾進制轉換十進制,那么M就是幾,比如要把二進制轉換為十進制,這個M就是2。而所謂的n就是從右邊數第幾位,比如對于從右邊數第3位的數字,n就是3,而n-1就是2。
剛才我們講的是第一種類型,就是把其他進制的數字轉換為十進制,下面我們再來說說十進制的數如何轉換為其他進制的數。十進制的數如何轉換為其他進制的數算法我們可以稱之為“輾轉求余法”。所謂“輾轉求余法”就是指不斷的用十進制的數字除以N,直到商為零為止,之后把每次除法操作所得到的余數串起來就完成了轉換。這里要說明的是,如果是希望轉換為二進制的數,那么就是不斷除以2,同理,如果是希望轉換為八進制的數,就不斷的除以8。我們就以十進制轉換為二進制為例來為大家講解這個算法。比如我們要把十進制的數字13轉換為2進制,就可以用以下方式完成轉換:
運算的過程如上圖所示:把13除以2,得到的商如果不為0,那么就以除法得到的商繼續除以2,一直到商為0為止,最后把每次除法操作所得到的余數從下到上串起來,得到的結果就是1101。
下面再來講一個十進制數轉換為十六進制數的例子。比如把1835這個數字轉換為十六進制,算法是一樣的,只不過這次是不斷的用這個數字除以16,過程如下圖所示:
把余數中大于9的余數替換為字母,也就是把11替換為B,這樣就得到了1835轉換為十六進制的數字為72B
以上我們已經講解了數制之間轉換的兩種類型,分別是其他進制轉換為十進制和十進制轉換為其他進制。現在就只剩第三種,那就是其他進制數字之間的轉換。首先我們講一下二進制轉換為十六進制數的算法。在講算法之前,必須先講一下二進制數和十六進制數有什么關系。我們知道,二進制數只有兩個原始數字分別是0和1,也就是說,二進制數的每一個位只有兩種情形,非0即1。按照排列組合的算法,如果我們想排列出4種情形,只用1位二進制數是無法實現的,因為二進制數的每一個位只有2種情形。要排列出4種情形,那必須用2位數,同理,想排列出8種情形,要用3位數,想排列出16種情形,必須用4位數。而十六進制數有16個原始數字,也就是說十六進制數僅僅1個位上的數字就都有16種變化的可能性。那么這樣我們就很容易理解一個道理,那就是:十六進制數的1位所能表示的數字,相當于二進制數4位所能表示的數字。
按照這種思想,我們把二進制數轉換為十六進制的數時,首先把每4位二進制數劃分為一組,把每一組二進制數字分別轉換為一位十六進制數。劃分時候從最右邊開始,每4位分為1組,如果劃到左邊發現不夠4位時,就讓剩余的這幾個數單獨劃分為一組。例如,二進制數101 1011 1000 1110轉換為十六進制數過程如下:
如上圖所示:從右邊開始,每4位分為一組,左邊不足4位的單獨劃分為一組,之后把每組二進制數先轉為十進制數,然后把大于9的數字用字母代替,最后就產生了轉換的結果5B8E。
這個例子是把二進制數字轉換為十六進制,在轉換的時候是把4位二進制數劃分為一組進行轉換,如果想把一個二進制數字轉換為八進制數該怎么辦呢?很多同學肯定會立刻想到,在轉換的時候把3位二進制數劃分為一組,為什么是3位劃分一組呢?原因很簡單,就是因為每3位二進制數可以排列出8種情形,而八進制數每1位數字就有8種變化的可能性。
我們仍然用剛才這個二進制數字進行舉例,其轉換過程如下:
看完這篇文章,你們學會數制之間相互轉換的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。