天天看點

計算機為什麼需要十六進制?

實際上計算機本身是不需要十六進制的,計算機隻需要二進制,需要十六進制的是人。

每個十六進制中的數字代表4個比特,你可以非常直覺的從十六進制中知道對應的二進制是啥,比如給定一個十六進制數,假設其最後一位是9,那麼你立刻就能知道将該十六進制數字轉為二進制後最後四位是1001:

  • 十六進制數字9對應的二進制為1001。
  • 十六進制數字19對應的二進制為11001。
  • 十六進制數字119對應的二進制為1 00011001

但是如果給定一個十進制數字,同樣假設其最後一位是9,你知道其對應的二進制嗎,顯然你是不知道的。

  • 十進制數字9對應的二進制為1001。
  • 十進制數字19對應的二進制為1 0011。
  • 十進制數字119對應的二進制為111 0111。

在十進制中你必須知道所有的進位上的數字後才可以将其轉為二進制,這非常不直覺,顯然如果你想把複雜的十進制數字轉為二進制不稍加計算是搞不定的。

是以我們可以得出結論:

十六進制是二進制的好朋友,但十進制不是

那為什麼十六進制是二進制的好朋友呢?

關鍵在于進制數16是2的4次方,2^4 = 16,而進制數10并不是2的整數次幂,是以8進制(2^3),16進制(2^4),32進制(2^5),64進制(2^6)等等都是二進制的好朋友。

有的同學肯定會問,那麼為什麼我們不使用32進制呢?

使用32進制,每5個比特位可以用一個32進制數字來表示,由于人類的數字系統隻有0~9,是以在16進制中10是字母a來表示的、11:b、12:c、13:d、14:e、15:f,但如果我們使用32進制,那麼16:g、17:h.......31:v,這時給一個32進制數字“apple”,你的大腦可能會一團漿糊,但十六進制對人類來說基本可以應付得來,原因就在于16進制中人類熟悉的數字占據了10個,剩下的隻借用了6個字母,還算簡單。

是以32進制及以上都不太适合給人使用,原因就在于:

可讀性太差。

此外使用十六進制還有一個重要原因:

一個位元組有8個比特

我們知道記憶體是按照位元組粒度來尋址的,是以采用的數字系統必須很好的表達一個位元組,也就是8比特,從這個角度上看256進制(2^8)是最好的,因為一個256進制就是表達一個位元組,但還是基于可讀性的原因,256進制對于人類來說記憶負擔過重,而16進制則剛剛好,一個16進制數字表示一個位元組的一半(4個比特),兩個16進制數字正好表示一個位元組。

那為什麼一個位元組有8比特而不是7比特或者9比特呢?其實答案很簡單:

曆史原因