更新時間:2018-01-30 來源:黑馬程序員 瀏覽量:
計算機(jī)本身是以二進(jìn)制存儲數(shù)據(jù)的,因此我們經(jīng)常會涉及到進(jìn)制之間的轉(zhuǎn)換,接下來我們進(jìn)行學(xué)習(xí)。
計算機(jī)內(nèi)部之所以采用二進(jìn)制,其主要原因是二進(jìn)制具有以下優(yōu)點(diǎn):
(1)技術(shù)上容易實現(xiàn)。用雙穩(wěn)態(tài)電路表示二進(jìn)制數(shù)字0和1是很容易的事情。
(2)可靠性高。二進(jìn)制中只使用0和1兩個數(shù)字,傳輸和處理時不易出錯,因而可以保障計算機(jī)具有很高的可靠性。
(3)運(yùn)算規(guī)則簡單。與十進(jìn)制數(shù)相比,二進(jìn)制數(shù)的運(yùn)算規(guī)則要簡單得多,這不僅可以使運(yùn)算器的結(jié)構(gòu)得到簡化,而且有利于提高運(yùn)算速度。
(4)與邏輯量相吻合。二進(jìn)制數(shù)0和1正好與邏輯量“真”和“假”相對應(yīng),因此用二進(jìn)制數(shù)表示二值邏輯顯得十分自然。
(5)二進(jìn)制數(shù)與十進(jìn)制數(shù)之間的轉(zhuǎn)換相當(dāng)容易。人們使用計算機(jī)時可以仍然使用自己所習(xí)慣的十進(jìn)制數(shù),而計算機(jī)將其自動轉(zhuǎn)換成二進(jìn)制數(shù)存儲和處理,輸出處理結(jié)果時又將二進(jìn)制數(shù)自動轉(zhuǎn)換成十進(jìn)制數(shù),這給工作帶來極大的方便。
一、十進(jìn)制和二進(jìn)制間的互相轉(zhuǎn)換
1. 十進(jìn)制轉(zhuǎn)二進(jìn)制
十進(jìn)制轉(zhuǎn)換成二進(jìn)制就是一個除以2取余數(shù)的過程。把要轉(zhuǎn)換的數(shù),除以2,得到商和余數(shù),將商繼續(xù)除以2,直到商為0。最后將所有余數(shù)倒序排列,得到數(shù)就是轉(zhuǎn)換結(jié)果。例如將6轉(zhuǎn)換為二進(jìn)制數(shù)的過程只需將6三次除以2計算得到余數(shù)依次是:0、1、1,將所有余數(shù)倒序排列是:110了。
2. 二進(jìn)制轉(zhuǎn)十進(jìn)制
二進(jìn)制轉(zhuǎn)換成十進(jìn)制,只需將二進(jìn)制轉(zhuǎn)化成十進(jìn)制要從右到左用二進(jìn)制位上的每個數(shù)去乘以2的相應(yīng)次方,然后把得到的所有結(jié)果相加,得到的結(jié)果就是轉(zhuǎn)換后的十進(jìn)制。如把一個二進(jìn)制數(shù)0110 0100轉(zhuǎn)換為10進(jìn)制
0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26+ 0 * 27 = 100
二、二進(jìn)制和八進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換
3. 二進(jìn)制轉(zhuǎn)八進(jìn)制
八進(jìn)制比二進(jìn)制數(shù)更容易記憶,因此可以把二進(jìn)制轉(zhuǎn)換為八進(jìn)制,這時可以用到下表。
有了這張表,就可以方便的把二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)。首先,將一個二進(jìn)制數(shù)自右向左每三位分成一段。然后,將每一段用表中的八進(jìn)制數(shù)替換即可。
例如:100101010
每三位分成一段的樣式:100 101 010
查表替換:100 ->4,101 ->5,010 ->2
替換結(jié)果:0452
2、二進(jìn)制轉(zhuǎn)十六進(jìn)制
將二進(jìn)制轉(zhuǎn)換成十六進(jìn)制也要用到二進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)換表,轉(zhuǎn)換方法與八進(jìn)制類似,只是要將二進(jìn)制數(shù)每四位分成一段即可。
三、十進(jìn)制和八進(jìn)制、十六進(jìn)制間的轉(zhuǎn)換
把十進(jìn)制轉(zhuǎn)換成八進(jìn)制或十六進(jìn)制如同把十進(jìn)制轉(zhuǎn)換成二進(jìn)制一樣,除以8、16,然后取余數(shù)倒敘排列即可。但是八進(jìn)制和十六進(jìn)制不像二進(jìn)制那樣簡單,運(yùn)算比較麻煩。
根據(jù)1個八進(jìn)制位代表3個二進(jìn)制位和1個十六進(jìn)制位代表4個二進(jìn)制位??梢韵劝咽M(jìn)制轉(zhuǎn)換成二進(jìn)制進(jìn)制,然后再把二進(jìn)制與八進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換。
如把十進(jìn)制的60轉(zhuǎn)換成八進(jìn)制和十六進(jìn)制,先把60轉(zhuǎn)換為二進(jìn)制為111100。根據(jù)二進(jìn)制和八進(jìn)制之間的轉(zhuǎn)換表,把111100格式轉(zhuǎn)換為八進(jìn)制。
每三位分成一段的樣式:111 100
查表替換:111 -->7,100 -->4
替換結(jié)果:074
根據(jù)二進(jìn)制和十六進(jìn)制之間的轉(zhuǎn)換表,把111100格式轉(zhuǎn)換為十六進(jìn)制。
每四位分成一段的樣式:0011 1100(最左面不夠四位用0替代)
查表替換:0011-->3,1100 --> C
替換結(jié)果:0x3C
把八進(jìn)制和十六進(jìn)制轉(zhuǎn)換為十進(jìn)制,可以采用把八進(jìn)制和十六進(jìn)制位上的數(shù)乘以其相應(yīng)次方,然后把各數(shù)相加的方法,也可以先逆向的把八進(jìn)制或十六進(jìn)制轉(zhuǎn)換為二進(jìn)制的形式,然后把二進(jìn)制轉(zhuǎn)換為十進(jìn)制。
本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員JavaEE培訓(xùn)學(xué)院
首發(fā):http://java.itheima.com/