溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

數(shù)制之間如何相互轉(zhuǎn)換

發(fā)布時間:2020-06-04 09:43:46 來源:億速云 閱讀:403 作者:Leah 欄目:編程語言

十進(jìn)制、二進(jìn)制、十六進(jìn)制以及八進(jìn)制,這些數(shù)制之間如何相互轉(zhuǎn)換?針對這個問題,今天小編總結(jié)這篇有關(guān)進(jìn)制轉(zhuǎn)換的文章,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

一、多種進(jìn)制的計數(shù)方法

首先來說我們最熟悉的十進(jìn)制。十進(jìn)制計數(shù)法有10個原始的數(shù)字,分別是0-9,當(dāng)我們想表示一個比9還大1的數(shù)字時,1個數(shù)位就不夠用了,必須用兩位數(shù)來表示,就是10,再比10大1的數(shù)是11...以此類推這樣就能表示出任意大的數(shù)字。
而計算機中使用的二進(jìn)制計數(shù)法,二進(jìn)制計數(shù)法只有兩個原始數(shù)字,就是0和1,想表示比1還大1的數(shù)字就需要用兩位數(shù)來表示,就是10,之后是11,再之后是100...二進(jìn)制計數(shù)法中最大的數(shù)字就是1,再增加的話就要進(jìn)位了。這樣以此類推也能表示任意一個數(shù)字。
通過學(xué)習(xí)二進(jìn)制計數(shù)法,想必大家已經(jīng)知道八進(jìn)制數(shù)的特點了,那就是總共有8個原始數(shù)字,分別是0-7,當(dāng)表示比7還大1的數(shù)字時,就必須進(jìn)位了。
那么再來說說十六進(jìn)制計數(shù)法。十六進(jìn)制計數(shù)法中,有16個原始數(shù)字,前10個原始數(shù)字我們就用0-9來表示,但我們習(xí)慣使用的阿拉伯?dāng)?shù)字只有0-9這10個數(shù)字,現(xiàn)在還差6個原始數(shù)字,怎么辦呢?我們就用字母去代替,這樣的話第11個原始數(shù)字就A,第12個原始數(shù)字就是B,以此類推,第16個原始數(shù)字就是F。這個F換算成10進(jìn)制數(shù)其實就是15。當(dāng)表示比F還要大1的數(shù)字,就需要進(jìn)位了,所以F再向后數(shù)就是10,11...小伙伴們可能非常不習(xí)慣16進(jìn)制的技術(shù)方法,因為突然跑出來一些字母來表示一個數(shù)字,其實用多了自然也就習(xí)慣了。

二、數(shù)制的相互轉(zhuǎn)換

下面我們來說說這些數(shù)制之間如何相互轉(zhuǎn)換。剛才提到的4種進(jìn)制的數(shù)字,相互轉(zhuǎn)換的話有12種情況,請看下圖:
數(shù)制之間如何相互轉(zhuǎn)換
從這幅圖片上大家可以看到,各種數(shù)制之間相互轉(zhuǎn)換情況的所有情形:四種數(shù)制之間相互連線,總共可以連12條線。很多小伙伴的第一反應(yīng)就是:這么多種情況,又要記很多轉(zhuǎn)換規(guī)則。其實大可不必?fù)?dān)心,我們可以把這12中情況分成3種類型,并且掌握每種類型的算法就可以了。12種情況可以分成以下三類

  • 其他進(jìn)制的數(shù)轉(zhuǎn)換為10進(jìn)制
  • 10進(jìn)制的數(shù)轉(zhuǎn)換為其他進(jìn)制的數(shù)
  • 其他數(shù)制之間相互轉(zhuǎn)換
    首先我們來說說其他進(jìn)制的數(shù)怎樣轉(zhuǎn)換為10進(jìn)制的數(shù)。當(dāng)我們拿到一個10進(jìn)制的數(shù)字,比如168,那么168為什么是168呢?小伙伴們都會說這不是廢話嗎?168不是168還能是多少?其實168這個數(shù)字是由3個原始數(shù)字1、6和8組成的,這3個原始數(shù)字分別占據(jù)百位、十位和個位,這樣,我們可以把168這個數(shù)字分解成以下形式:

數(shù)制之間如何相互轉(zhuǎn)換
以上算式運算得到的值是168,所以1、6和8這3個原始數(shù)字排列起來就能表示168。
這里需要強調(diào)一個細(xì)節(jié),因為我們現(xiàn)在討論的是10進(jìn)制的數(shù)字,這三個原始數(shù)字都是乘以以10為底的n次方。按照這個原理,如果討論的是2進(jìn)制數(shù)字,那么計算一個數(shù)就應(yīng)該是原始數(shù)字乘以以2為底的n次方,然后再把各個數(shù)字相加,最后就能得出這個數(shù)字的具體值了,比如一個二進(jìn)制數(shù)101,按照剛才的算法,可以把101分解成以下形式:
數(shù)制之間如何相互轉(zhuǎn)換
以上算式運算得到的值是5。這就是二進(jìn)制轉(zhuǎn)換為10進(jìn)制數(shù)的基本原理。
同樣的,我們也可以把十六進(jìn)制和八進(jìn)制的數(shù)轉(zhuǎn)換為十進(jìn)制,比如十六進(jìn)制的數(shù)1AF,可以分解成如下形式:
數(shù)制之間如何相互轉(zhuǎn)換
我們在運算時把A和F直接替換成對應(yīng)的十進(jìn)制數(shù)10和15,以上算式運算最終得到的十進(jìn)制數(shù)就是431。通過幾個例子,相信大家已經(jīng)掌握了其他進(jìn)制的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的算法。這個算法的套路就是把各個位上的數(shù)字與M為底的n-1次方相乘,然后把相乘的結(jié)果都加起來,需要注意的是:幾進(jìn)制轉(zhuǎn)換十進(jìn)制,那么M就是幾,比如要把二進(jìn)制轉(zhuǎn)換為十進(jìn)制,這個M就是2。而所謂的n就是從右邊數(shù)第幾位,比如對于從右邊數(shù)第3位的數(shù)字,n就是3,而n-1就是2。

剛才我們講的是第一種類型,就是把其他進(jìn)制的數(shù)字轉(zhuǎn)換為十進(jìn)制,下面我們再來說說十進(jìn)制的數(shù)如何轉(zhuǎn)換為其他進(jìn)制的數(shù)。十進(jìn)制的數(shù)如何轉(zhuǎn)換為其他進(jìn)制的數(shù)算法我們可以稱之為“輾轉(zhuǎn)求余法”。所謂“輾轉(zhuǎn)求余法”就是指不斷的用十進(jìn)制的數(shù)字除以N,直到商為零為止,之后把每次除法操作所得到的余數(shù)串起來就完成了轉(zhuǎn)換。這里要說明的是,如果是希望轉(zhuǎn)換為二進(jìn)制的數(shù),那么就是不斷除以2,同理,如果是希望轉(zhuǎn)換為八進(jìn)制的數(shù),就不斷的除以8。我們就以十進(jìn)制轉(zhuǎn)換為二進(jìn)制為例來為大家講解這個算法。比如我們要把十進(jìn)制的數(shù)字13轉(zhuǎn)換為2進(jìn)制,就可以用以下方式完成轉(zhuǎn)換:

數(shù)制之間如何相互轉(zhuǎn)換
運算的過程如上圖所示:把13除以2,得到的商如果不為0,那么就以除法得到的商繼續(xù)除以2,一直到商為0為止,最后把每次除法操作所得到的余數(shù)從下到上串起來,得到的結(jié)果就是1101。
下面再來講一個十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)的例子。比如把1835這個數(shù)字轉(zhuǎn)換為十六進(jìn)制,算法是一樣的,只不過這次是不斷的用這個數(shù)字除以16,過程如下圖所示:
數(shù)制之間如何相互轉(zhuǎn)換
把余數(shù)中大于9的余數(shù)替換為字母,也就是把11替換為B,這樣就得到了1835轉(zhuǎn)換為十六進(jìn)制的數(shù)字為72B

以上我們已經(jīng)講解了數(shù)制之間轉(zhuǎn)換的兩種類型,分別是其他進(jìn)制轉(zhuǎn)換為十進(jìn)制和十進(jìn)制轉(zhuǎn)換為其他進(jìn)制。現(xiàn)在就只剩第三種,那就是其他進(jìn)制數(shù)字之間的轉(zhuǎn)換。首先我們講一下二進(jìn)制轉(zhuǎn)換為十六進(jìn)制數(shù)的算法。在講算法之前,必須先講一下二進(jìn)制數(shù)和十六進(jìn)制數(shù)有什么關(guān)系。我們知道,二進(jìn)制數(shù)只有兩個原始數(shù)字分別是0和1,也就是說,二進(jìn)制數(shù)的每一個位只有兩種情形,非0即1。按照排列組合的算法,如果我們想排列出4種情形,只用1位二進(jìn)制數(shù)是無法實現(xiàn)的,因為二進(jìn)制數(shù)的每一個位只有2種情形。要排列出4種情形,那必須用2位數(shù),同理,想排列出8種情形,要用3位數(shù),想排列出16種情形,必須用4位數(shù)。而十六進(jìn)制數(shù)有16個原始數(shù)字,也就是說十六進(jìn)制數(shù)僅僅1個位上的數(shù)字就都有16種變化的可能性。那么這樣我們就很容易理解一個道理,那就是:十六進(jìn)制數(shù)的1位所能表示的數(shù)字,相當(dāng)于二進(jìn)制數(shù)4位所能表示的數(shù)字。
按照這種思想,我們把二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制的數(shù)時,首先把每4位二進(jìn)制數(shù)劃分為一組,把每一組二進(jìn)制數(shù)字分別轉(zhuǎn)換為一位十六進(jìn)制數(shù)。劃分時候從最右邊開始,每4位分為1組,如果劃到左邊發(fā)現(xiàn)不夠4位時,就讓剩余的這幾個數(shù)單獨劃分為一組。例如,二進(jìn)制數(shù)101 1011 1000 1110轉(zhuǎn)換為十六進(jìn)制數(shù)過程如下:
數(shù)制之間如何相互轉(zhuǎn)換
如上圖所示:從右邊開始,每4位分為一組,左邊不足4位的單獨劃分為一組,之后把每組二進(jìn)制數(shù)先轉(zhuǎn)為十進(jìn)制數(shù),然后把大于9的數(shù)字用字母代替,最后就產(chǎn)生了轉(zhuǎn)換的結(jié)果5B8E。
這個例子是把二進(jìn)制數(shù)字轉(zhuǎn)換為十六進(jìn)制,在轉(zhuǎn)換的時候是把4位二進(jìn)制數(shù)劃分為一組進(jìn)行轉(zhuǎn)換,如果想把一個二進(jìn)制數(shù)字轉(zhuǎn)換為八進(jìn)制數(shù)該怎么辦呢?很多同學(xué)肯定會立刻想到,在轉(zhuǎn)換的時候把3位二進(jìn)制數(shù)劃分為一組,為什么是3位劃分一組呢?原因很簡單,就是因為每3位二進(jìn)制數(shù)可以排列出8種情形,而八進(jìn)制數(shù)每1位數(shù)字就有8種變化的可能性。
我們?nèi)匀挥脛偛胚@個二進(jìn)制數(shù)字進(jìn)行舉例,其轉(zhuǎn)換過程如下:

  1. 數(shù)制之間如何相互轉(zhuǎn)換
    轉(zhuǎn)換結(jié)果為55616。因為3位二進(jìn)制數(shù)不可能組合出比8還大的數(shù)字,所以不會出現(xiàn)用字母替換數(shù)字的情況,那么我們所得到的這個數(shù)字本身就已經(jīng)是一個八進(jìn)制數(shù)了。
    以上講解的是用二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制和八進(jìn)制數(shù),那么八進(jìn)制數(shù)怎么轉(zhuǎn)為二進(jìn)制數(shù)十六進(jìn)制數(shù)如何轉(zhuǎn)換為八進(jìn)制數(shù)?八進(jìn)制怎么轉(zhuǎn)化為十六進(jìn)制等等。這幾種情況確實不太容易直接轉(zhuǎn)換,其實大家也不必?fù)?dān)心,我們可以用兩步來實現(xiàn),首先把某種進(jìn)制的數(shù)字轉(zhuǎn)成十進(jìn)制數(shù),以十進(jìn)制數(shù)為媒介,再轉(zhuǎn)換為另一種數(shù)制就可以了。比如就拿剛才的數(shù)字來說,如果我們希望把八進(jìn)制數(shù)字55616轉(zhuǎn)換為十六進(jìn)制數(shù),可以先把這個八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)23438,再把十進(jìn)制的數(shù)字23438轉(zhuǎn)換為十六進(jìn)制數(shù)5B8E就可以了。總之,所有不方便轉(zhuǎn)換的情況,都可以先轉(zhuǎn)換為十進(jìn)制數(shù),然后再進(jìn)行二次轉(zhuǎn)換。這樣,任意兩種數(shù)制之間就都能夠?qū)崿F(xiàn)相互轉(zhuǎn)換了。

看完這篇文章,你們學(xué)會數(shù)制之間相互轉(zhuǎn)換的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI