如何把二進位制數轉化為十進位制數

來源:酷知科普網 2.8W

在二進位制(基數為2)數字系統中有兩個可能值,在每一位上,通常表示為0或1。相反,在十進位制(基數為10)數字系統中,在每一位上,有10個可能值 (0,1,2,3,4,5,6,7,8, 或9)。

在使用不同的數字系統時,為了避免混亂的產生,可將基數標記在某個數的下標位置。例如,可以把二進位制數標明為 "基數為2"的數,即寫作10011100。而十進位制數156可寫作156,並讀作"以10為基數的一百五十六"。

因為二進位制系統是電子計算機的內部語言,因此真正的程式設計師應該掌握如何把二進位制數轉換為十進位制數。而如果首先學習把十進位制數轉換為二進位制數則相對更困難。

注意:這裡只討論數值的轉換而非ASCII程式碼的轉換。

按位記數法

(01)在本例中,我們將把二進位制數10011011轉換為十進位制數。從左到右地列出2的冪。從20開始,結果為"1"。每向右移一位,就對其指數加1。列出的元素個數應等於二進位制數的位數。在本例中,10011011有8位數字,因此應列出的8個元素:128, 64, 32, 16, 8, 4, 2, 1

如何把二進位制數轉化為十進位制數

(02)把二進位制數上的每一位數字對應地寫到列表下方。

如何把二進位制數轉化為十進位制數 第2張

(03)從右邊開始,畫出線條,用於把二進位制數中連續的數字和其上方的2的冪連線起來。從右邊開始,畫一條線,把二進位制數的第一個數字和2的第一個冪值連線起來。然後,畫一條線,把二進位制數的第二個數字和2的第二個冪值連線起來。依次類推,畫出線條把每一個數字和對應的冪值連線起來。

如何把二進位制數轉化為十進位制數 第3張

(04)掃描二進位制數中的每一位數字。如果對應的數字為1,則線上條下方寫下對應的2的冪值。如果對應的數字為0,則線上條下方寫下0。

如何把二進位制數轉化為十進位制數 第4張

(05)把線條下方的數相加。所得總和為155。這就是二進位制數10011011對應的十進位制數。或者寫成基數下標的形式:

如何把二進位制數轉化為十進位制數 第5張

(06)以上方法熟悉後,你將記得2的每一個冪值,因此可以省略第1步。

如何把二進位制數轉化為十進位制數 第6張

雙倍法

(01)該方法不需要使用冪運算。因此,當你通過心算轉換較大的數值時,該方法更簡單,因為你只需要記下部分和。

(02)從給定二進位制數最左邊的數字開始。對於每一位數字,你向右移動,對之前所得總和乘以2並加上當前數值。例如,把1011001轉換為十進位制數,我們將採用如下步驟:

如何把二進位制數轉化為十進位制數 第7張

(03)1011001 → 0 * 2 + 1 = 1

如何把二進位制數轉化為十進位制數 第8張

(04)1011001 → 1 * 2 + 0 = 2

如何把二進位制數轉化為十進位制數 第9張

(05)1011001 → 2 * 2 + 1 = 5

如何把二進位制數轉化為十進位制數 第10張

(06)1011001 → 5 * 2 + 1 = 11

如何把二進位制數轉化為十進位制數 第11張

(07)1011001 → 11 * 2 + 0 = 22

如何把二進位制數轉化為十進位制數 第12張

(08)1011001 → 22 * 2 + 0 = 44

如何把二進位制數轉化為十進位制數 第13張

(09)1011001 → 44 * 2 + 1 = 89

如何把二進位制數轉化為十進位制數 第14張

(10)和按位記數法一樣,本方法經調整後也能把基於任何基數的數轉換為十進位制數。在這裡採用雙倍法因為這裡給定的數是以2為基數的。如果給定的數是基於不同的基數,則應本方法中的2換成對應的基數。例如,如果給定數是以37為基數,則你在計算時應把*2換為*37。而最終的結果則總是對應的十進位制數(基數10)。 :)

如何把二進位制數轉化為十進位制數 第15張

特別提示

練習。嘗試轉換二進位制數11010001、11001和11110001。它們對應的十進位制數分別是209、25和。

Microsoft Windows上的計算器能幫助你完成不同數制中的數的轉換,但作為一名程式設計師,你應該理解並掌握轉換的方法。計算器中的轉換選項可以通過選擇"檢視"選單中的"科學型"(或 "程式設計師")。在Linux上,你可以使用galculator。

這裡使用的是無符號二進位制數,而非有符號數、浮點數或定點數。

熱門標籤