為什么計算機(jī)需要十六進(jìn)制?
大家好,我是小風(fēng)哥,今天簡單聊聊十六進(jìn)制。
實(shí)際上計算機(jī)本身是不需要十六進(jìn)制的,計算機(jī)只需要二進(jìn)制,需要十六進(jìn)制的是人。
每個十六進(jìn)制中的數(shù)字代表4個比特,你可以非常直觀的從十六進(jìn)制中知道對應(yīng)的二進(jìn)制是啥,比如給定一個十六進(jìn)制數(shù),假設(shè)其最后一位是9,那么你立刻就能知道將該十六進(jìn)制數(shù)字轉(zhuǎn)為二進(jìn)制后最后四位是1001:
- 十六進(jìn)制數(shù)字9對應(yīng)的二進(jìn)制為1001。
- 十六進(jìn)制數(shù)字19對應(yīng)的二進(jìn)制為1 1001。
- 十六進(jìn)制數(shù)字119對應(yīng)的二進(jìn)制為1 0001 1001
但是如果給定一個十進(jìn)制數(shù)字,同樣假設(shè)其最后一位是9,你知道其對應(yīng)的二進(jìn)制嗎,顯然你是不知道的。
- 十進(jìn)制數(shù)字9對應(yīng)的二進(jìn)制為1001。
- 十進(jìn)制數(shù)字19對應(yīng)的二進(jìn)制為1 0011。
- 十進(jìn)制數(shù)字119對應(yīng)的二進(jìn)制為111 0111。
在十進(jìn)制中你必須知道所有的進(jìn)位上的數(shù)字后才可以將其轉(zhuǎn)為二進(jìn)制,這非常不直觀,顯然如果你想把復(fù)雜的十進(jìn)制數(shù)字轉(zhuǎn)為二進(jìn)制不稍加計算是搞不定的。
因此我們可以得出結(jié)論:
十六進(jìn)制是二進(jìn)制的好朋友,但十進(jìn)制不是
那為什么十六進(jìn)制是二進(jìn)制的好朋友呢?
關(guān)鍵在于進(jìn)制數(shù)16是2的4次方,2^4 = 16,而進(jìn)制數(shù)10并不是2的整數(shù)次冪,因此8進(jìn)制(2^3),16進(jìn)制(2^4),32進(jìn)制(2^5),64進(jìn)制(2^6)等等都是二進(jìn)制的好朋友。
有的同學(xué)肯定會問,那么為什么我們不使用32進(jìn)制呢?
使用32進(jìn)制,每5個比特位可以用一個32進(jìn)制數(shù)字來表示,由于人類的數(shù)字系統(tǒng)只有0~9,因此在16進(jìn)制中10是字母a來表示的、11:b、12:c、13:d、14:e、15:f,但如果我們使用32進(jìn)制,那么16:g、17:h.......31:v,這時給一個32進(jìn)制數(shù)字“apple”,你的大腦可能會一團(tuán)漿糊,但十六進(jìn)制對人類來說基本可以應(yīng)付得來,原因就在于16進(jìn)制中人類熟悉的數(shù)字占據(jù)了10個,剩下的只借用了6個字母,還算簡單。
因此32進(jìn)制及以上都不太適合給人使用,原因就在于:
可讀性太差。
此外使用十六進(jìn)制還有一個重要原因:
一個字節(jié)有8個比特
我們知道內(nèi)存是按照字節(jié)粒度來尋址的,因此采用的數(shù)字系統(tǒng)必須很好的表達(dá)一個字節(jié),也就是8比特,從這個角度上看256進(jìn)制(2^8)是最好的,因?yàn)橐粋€256進(jìn)制就是表達(dá)一個字節(jié),但還是基于可讀性的原因,256進(jìn)制對于人類來說記憶負(fù)擔(dān)過重,而16進(jìn)制則剛剛好,一個16進(jìn)制數(shù)字表示一個字節(jié)的一半(4個比特),兩個16進(jìn)制數(shù)字正好表示一個字節(jié)。
那為什么一個字節(jié)有8比特而不是7比特或者9比特呢?其實(shí)答案很簡單:
歷史原因
要知道早期的計算機(jī)可不是一個字節(jié)8比特,那時一個字節(jié)4比特、6比特或者7比特的都有。
但4比特或者6比特還是太受限制,因?yàn)槲覀冃枰炎帜笖?shù)字以及標(biāo)點(diǎn)符號等等轉(zhuǎn)為二進(jìn)制表示,4比特或6比特能表示的數(shù)量太少。
到了1963年,ASCII正式提出,該標(biāo)準(zhǔn)使用7比特來表示字符,但當(dāng)時的IBM System/360大型機(jī)采用了8比特字節(jié),使得8比特字節(jié)開始流行起來,到后來微型計算機(jī)出現(xiàn)時也自然采用了這一表示方法。
現(xiàn)在你應(yīng)該明白了吧。