一鸡挠、 十進(jìn)制與二進(jìn)制之間的轉(zhuǎn)換
1.1 十進(jìn)制轉(zhuǎn)換為二進(jìn)制辉饱,分為整數(shù)部分和小數(shù)部分
【1】整數(shù)部分
方法:采用"除2取余,逆序排列"法
即每次將整數(shù)部分除以2拣展,余數(shù)為該位權(quán)上的數(shù)彭沼,而商繼續(xù)除以2,余數(shù)又為上一個(gè)位權(quán)上的數(shù)备埃,這個(gè)步驟一直持續(xù)下去姓惑,直到商為0為止,最后讀數(shù)時(shí)候按脚,從最后一個(gè)余數(shù)讀起于毙,一直到最前面的一個(gè)余數(shù)。
舉個(gè)栗子:將十進(jìn)制數(shù)168轉(zhuǎn)換為二進(jìn)制數(shù)
? ? ? ? ? ? ?除數(shù)? ? ? ?被除數(shù)? ? ? ? ? ?商? ? ? ? ? ?余數(shù)
第0位:168? ? ? /? ? ? ? 2??? ? ?=? ? ?84? ......0
第1位:84? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ?42 ......0
第2位:42? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ?21 ......0
第3位:21? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ?10 ........1
第4位:10? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ? 5 ........0
第5位:5? ? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ? 2 ........?1
第6位:2? ? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ? 1 ........0
第7位:1? ? ? ? ?/? ? ? ? ?2? ? ? ?=? ? ? 0 ........1
最后辅搬,讀數(shù)字從最后的余數(shù)向前讀唯沮,即10101000
(2)小數(shù)部分
方法:采用"乘2取整,順序排列"法
即將小數(shù)部分乘以2,然后取整數(shù)部分介蛉;剩下的小數(shù)部分繼續(xù)乘以2萌庆,然后取整數(shù)部分;剩下的小數(shù)部分又乘以2币旧,一直取到小數(shù)部分為零為止践险。
如果永遠(yuǎn)不能為零,就同十進(jìn)制數(shù)的四舍五入一樣吹菱,按照要求保留多少位小數(shù)時(shí)捏境,就根據(jù)后面一位是0還是1,取舍毁葱,如果是零垫言,舍掉,如果是1倾剿,向入一位筷频。
換句話說(shuō)就是0舍1入。讀數(shù)要從前面的整數(shù)讀到后面的整數(shù)前痘。
栗子1:將0.125換算為二進(jìn)制
? ? ? ? ? ? ?乘數(shù)? ? ? ? ? ? 乘數(shù)? ? ? ? ? ?積? ? ? ? ? ?整數(shù)部分? ? ? 小數(shù)部分
第2位:0.125? ? ?*? ? ? 2? ? ? ?=? ? ?0.25? ? ......0......? ??0.25
第1位:0.25? ? ? ?*? ? ? 2? ? ? ?=? ? ?0.5? ? ? ......0......? ??0.5
第0位:0.5? ? ? ? ?*? ? ? 2? ? ? ?=? ? ?1.0? ? ? ......1......? ??0.0
最后讀數(shù)凛捏,從整數(shù)部分自上而下排序,第一位讀起,讀到最后一位,即為0.001
栗子2:將0.45轉(zhuǎn)換為二進(jìn)制(保留到小數(shù)點(diǎn)第四位)
? ? ? ? ? ? 乘數(shù)? ? ? ? ? ? 乘數(shù)? ? ? ? ? ?? ?積? ? ? ? ? ?整數(shù)部分? ? ?小數(shù)部分
第4位:0.45? ? ? *? ? ? 2? ? ? ? ?=? ? ?0.9? ? ......0......? ??0.9
第3位:0.9? ? ? ? *? ? ? 2? ? ? ? ?=? ? ?1.8? ? ......1......? ??0.8
第2位:0.8? ? ? ? *? ? ? 2? ? ? ? ?=? ? ?1.6? ? ......1......? ??0.6
第1位:0.6? ? ? ? *? ? ? 2? ? ? ? ?=? ? ?1.2? ? ......1......? ??0.2
第0位:0.2? ? ? ? *? ? ? 2? ? ? ? ?=? ? ?0.4? ? ......0......? ??0.4
從上面步驟可以看出芹缔,當(dāng)?shù)?次做乘法時(shí)候坯癣,得到的積是0.4,那么小數(shù)部分繼續(xù)乘以2最欠,得0.8示罗;繼續(xù),0.8又乘以2的芝硬,得到1.6蚜点;然后一直乘下去,最后不可能得到小數(shù)部分為零拌阴。因此绍绘,這個(gè)時(shí)候只好學(xué)習(xí)十進(jìn)制的方法進(jìn)行四舍五入了,但是二進(jìn)制只有0和1兩個(gè)迟赃,于是就出現(xiàn)0舍1入陪拘。這個(gè)也是計(jì)算機(jī)在轉(zhuǎn)換中會(huì)產(chǎn)生誤差,但是由于保留位數(shù)很多纤壁,精度很高左刽,所以可以忽略不計(jì)。
最后度數(shù)摄乒,從整數(shù)部分自上而下悠反,可知將0.45轉(zhuǎn)換為二進(jìn)制約等于0.0111
上面介紹的方法是十進(jìn)制轉(zhuǎn)換為為二進(jìn)制的方法残黑,需要大家注意的是:
十進(jìn)制轉(zhuǎn)換為二進(jìn)制,需要分成整數(shù)和小數(shù)兩個(gè)部分分別轉(zhuǎn)換斋否。
當(dāng)轉(zhuǎn)換整數(shù)時(shí)梨水,用的是除2取余法;
當(dāng)轉(zhuǎn)換小數(shù)時(shí)茵臭,用的是乘2取整法疫诽。
注意轉(zhuǎn)換進(jìn)制數(shù)的讀數(shù)方向。
因此旦委,我們從上面的方法奇徒,我們可以得出十進(jìn)制數(shù)168.125轉(zhuǎn)換為二進(jìn)制為10101000.001,或者十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)約等于10101000.0111缨硝。
1.2 二進(jìn)制轉(zhuǎn)換為十進(jìn)制
方法:按權(quán)相加法
以小數(shù)點(diǎn)(.)為分界點(diǎn)摩钙,整數(shù)部分二進(jìn)制轉(zhuǎn)為十進(jìn)制要從右到左用二進(jìn)制的每個(gè)數(shù)去乘以2的相應(yīng)次方,而小數(shù)點(diǎn)后的則是從左往右查辩。
即將二進(jìn)制每位上的數(shù)乘以權(quán)胖笛,然后相加之和即是十進(jìn)制數(shù)。
舉個(gè)栗子:將二進(jìn)制數(shù)101.101轉(zhuǎn)換為十進(jìn)制數(shù)宜岛。
101.101 =1*2^2+0*2^1+1*2^0+1*2^(-1)+0*2^(-2)+1*2^(-3) = 4+0+1+1/2+0+1/8?= 5.625?
得出結(jié)果:(101.101)2=(5.625)10
大家在做二進(jìn)制轉(zhuǎn)換成十進(jìn)制需要注意的是:
要知道二進(jìn)制每位的權(quán)值长踊。
要能求出每位的值。
二萍倡、 二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換
首先身弊,我們需要了解一個(gè)數(shù)學(xué)關(guān)系,即23=8列敲,24=16阱佛,而八進(jìn)制和十六進(jìn)制是用這關(guān)系衍生而來(lái)的,即用三位二進(jìn)制表示一位八進(jìn)制酿炸,用四位二進(jìn)制表示一位十六進(jìn)制數(shù)瘫絮。
接著涨冀,記住4個(gè)數(shù)字8填硕、4、2鹿鳖、1(23=8扁眯、22=4、21=2翅帜、20=1)∫鎏矗現(xiàn)在我們來(lái)練習(xí)二進(jìn)制與八進(jìn)制之間的轉(zhuǎn)換。
(1) 二進(jìn)制轉(zhuǎn)換為八進(jìn)制
方法:取三合一法
即從二進(jìn)制的小數(shù)點(diǎn)為分界點(diǎn)涝滴,向左(向右)每三位取成一位绣版,接著將這三位二進(jìn)制按權(quán)相加胶台,得到的數(shù)就是一位八位二進(jìn)制數(shù),然后杂抽,按順序進(jìn)行排列诈唬,小數(shù)點(diǎn)的位置不變,得到的數(shù)字就是我們所求的八進(jìn)制數(shù)缩麸。如果向左(向右)取三位后铸磅,取到最高(最低)位時(shí)候,如果無(wú)法湊足三位杭朱,可以在小數(shù)點(diǎn)最左邊(最右邊)阅仔,即整數(shù)的最高位(最低位)添0,湊足三位弧械。
栗子1:將二進(jìn)制數(shù)101110.101轉(zhuǎn)換為八進(jìn)制
按照取三合一原則八酒,將101110.101劃分為:101110?.101每三位對(duì)應(yīng)一位八進(jìn)制數(shù),則
101----->1* 2^2 + 0* 2^1 + 1* 2^0?= 5
110----->1* 2^2 + 1* 2^1 + 0* 2^0?=6
.?
101----->1* 2^2 + 0* 2^1 + 1* 2^0?=5
最后得到結(jié)果:將二進(jìn)制101110.101轉(zhuǎn)八進(jìn)制數(shù)為56.5
栗子2:將二進(jìn)制數(shù)1101.1轉(zhuǎn)換為八進(jìn)制
按照取三合一原則刃唐,不夠三位的在高位補(bǔ)0丘跌,將1101.1劃分為:001101?.100每三位對(duì)應(yīng)一位八進(jìn)制數(shù),則
001----->0* 2^2 + 0* 2^1 + 1* 2^0?=1?
101----->1* 2^2 + 0* 2^1 + 1* 2^0?=5?
.?
100----->1* 2^2 + 0* 2^1 + 0* 2^0?=54
得到結(jié)果:將十進(jìn)制數(shù)1101.1轉(zhuǎn)八進(jìn)制數(shù)為15.4
(2) 將八進(jìn)制轉(zhuǎn)換為二進(jìn)制
方法:取一分三法
即將一位八進(jìn)制數(shù)分解成三位二進(jìn)制數(shù)唁桩,用三位二進(jìn)制按權(quán)相加去湊這位八進(jìn)制數(shù)闭树,小數(shù)點(diǎn)位置照舊。
舉個(gè)栗子:
1.將八進(jìn)制數(shù)67.54轉(zhuǎn)換為二進(jìn)制
因此荒澡,將八進(jìn)制數(shù)67.54轉(zhuǎn)換為二進(jìn)制數(shù)為110111.101100报辱,即110111.1011
大家從上面這道題可以看出,計(jì)算八進(jìn)制轉(zhuǎn)換為二進(jìn)制
首先单山,將八進(jìn)制按照從左到右碍现,每位展開(kāi)為三位,小數(shù)點(diǎn)位置不變
然后米奸,按每位展開(kāi)為22昼接,21,20(即4悴晰、2慢睡、1)三位去做湊數(shù),即a×22+ b×21 +c×20=該位上的數(shù)(a=1或者a=0铡溪,b=1或者b=0漂辐,c=1或者c=0),將abc排列就是該位的二進(jìn)制數(shù)
接著,將每位上轉(zhuǎn)換成二進(jìn)制數(shù)按順序排列
最后棕硫,就得到了八進(jìn)制轉(zhuǎn)換成二進(jìn)制的數(shù)字髓涯。
以上的方法就是二進(jìn)制與八進(jìn)制的互換,大家在做題的時(shí)候需要注意的是:
他們之間的互換是以一位與三位轉(zhuǎn)換哈扮,這個(gè)有別于二進(jìn)制與十進(jìn)制轉(zhuǎn)換
大家在做添0和去0的時(shí)候要注意纬纪,是在小數(shù)點(diǎn)最左邊或者小數(shù)點(diǎn)的最右邊(即整數(shù)的最高位和小數(shù)的最低位)才能添0或者去0蚓再,否則將產(chǎn)生錯(cuò)誤
三、 二進(jìn)制與十六進(jìn)制的轉(zhuǎn)換
方法:與二進(jìn)制與八進(jìn)制轉(zhuǎn)換相似包各,只不過(guò)是一位(十六)與四位(二進(jìn)制)的轉(zhuǎn)換
(1) 二進(jìn)制轉(zhuǎn)換為十六進(jìn)制
方法:取四合一法
即從二進(jìn)制的小數(shù)點(diǎn)為分界點(diǎn)对途,向左(向右)每四位取成一位,接著將這四位二進(jìn)制按權(quán)相加髓棋,得到的數(shù)就是一位十六位二進(jìn)制數(shù)实檀,然后,按順序進(jìn)行排列按声,小數(shù)點(diǎn)的位置不變膳犹,得到的數(shù)字就是我們所求的十六進(jìn)制數(shù)。如果向左(向右)取四位后签则,取到最高(最低)位時(shí)候须床,如果無(wú)法湊足四位,可以在小數(shù)點(diǎn)最左邊(最右邊)渐裂,即整數(shù)的最高位(最低位)添0豺旬,湊足四位。
1.例:將二進(jìn)制11101001.1011轉(zhuǎn)換為十六進(jìn)制
按照取四合一原則柒凉,不夠四位的在高位補(bǔ)0族阅,將11101001.1011劃分為:11101001?.1011每四位對(duì)應(yīng)一位八進(jìn)制數(shù),則
1110----->1*2^3 + 1* 2^2 + 1* 2^1 + 0* 2^0?= 14=E?
1001----->1*2^3 + 0* 2^2?+ 0* 2^1 + 1* 2^0?=9?
.?
1011----->1*2^3 + 0* 2^2 + 1* 2^1 + 1* 2^0?= 11=B
得到結(jié)果:將二進(jìn)制11101001.1011轉(zhuǎn)換為十六進(jìn)制為E9.B
2.例:將101011.101轉(zhuǎn)換為十六進(jìn)制
因此得到結(jié)果:將二進(jìn)制101011.101轉(zhuǎn)換為十六進(jìn)制為2B.A
(2)將十六進(jìn)制轉(zhuǎn)換為二進(jìn)制
方法:取一分四法
即將一位十六進(jìn)制數(shù)分解成四位二進(jìn)制數(shù)膝捞,用四位二進(jìn)制按權(quán)相加去湊這位十六進(jìn)制數(shù)坦刀,小數(shù)點(diǎn)位置照舊。
1.將十六進(jìn)制6E.2轉(zhuǎn)換為二進(jìn)制數(shù)
因此得到結(jié)果:將十六進(jìn)制6E.2轉(zhuǎn)換為二進(jìn)制為01101110.0010即110110.001
四蔬咬、八進(jìn)制與十六進(jìn)制的轉(zhuǎn)換
方法:一般不能互相直接轉(zhuǎn)換鲤遥,一般是將八進(jìn)制(或十六進(jìn)制)轉(zhuǎn)換為二進(jìn)制,然后再將二進(jìn)制轉(zhuǎn)換為十六進(jìn)制(或八進(jìn)制)林艘,小數(shù)點(diǎn)位置不變盖奈。那么相應(yīng)的轉(zhuǎn)換請(qǐng)參照上面二進(jìn)制與八進(jìn)制的轉(zhuǎn)換和二進(jìn)制與十六進(jìn)制的轉(zhuǎn)。
五狐援、八進(jìn)制與十進(jìn)制的轉(zhuǎn)換
(1)八進(jìn)制轉(zhuǎn)換為十進(jìn)制
方法:按權(quán)相加法
即將八進(jìn)制每位上的數(shù)乘以位權(quán)钢坦,然后相加之和即是十進(jìn)制數(shù)。
例:1.將八進(jìn)制數(shù)67.35轉(zhuǎn)換為十進(jìn)制
(2)十進(jìn)制轉(zhuǎn)換為八進(jìn)制
十進(jìn)制轉(zhuǎn)換成八進(jìn)制有兩種方法:
1)間接法:先將十進(jìn)制轉(zhuǎn)換成二進(jìn)制咕村,然后將二進(jìn)制又轉(zhuǎn)換成八進(jìn)制
2)直接法:前面我們講過(guò)场钉,八進(jìn)制是由二進(jìn)制衍生而來(lái)的,因此我們可以采用與十進(jìn)制轉(zhuǎn)換為二進(jìn)制相類(lèi)似的方法懈涛,還是整數(shù)部分的轉(zhuǎn)換和小數(shù)部分的轉(zhuǎn)換,下面來(lái)具體講解一下:
1.整數(shù)部分
方法:除8取余法泳猬,即每次將整數(shù)部分除以8批钠,余數(shù)為該位權(quán)上的數(shù)宇植,而商繼續(xù)除以8,余數(shù)又為上一個(gè)位權(quán)上的數(shù)埋心,這個(gè)步驟一直持續(xù)下去指郁,直到商為0為止,最后讀數(shù)時(shí)候拷呆,從最后一個(gè)余數(shù)起闲坎,一直到最前面的一個(gè)余數(shù)。
2.小數(shù)部分
方法:乘8取整法茬斧,即將小數(shù)部分乘以8腰懂,然后取整數(shù)部分,剩下的小數(shù)部分繼續(xù)乘以8项秉,然后取整數(shù)部分绣溜,剩下的小數(shù)部分又乘以8,一直取到小數(shù)部分為零為止娄蔼。如果永遠(yuǎn)不能為零怖喻,就同十進(jìn)制數(shù)的四舍五入一樣,暫取個(gè)名字叫3舍4入岁诉。
例:將十進(jìn)制數(shù)796.703125轉(zhuǎn)換為八進(jìn)制數(shù)
解:先將這個(gè)數(shù)字分為整數(shù)部分796和小數(shù)部分0.703125
因此锚沸,得到結(jié)果十進(jìn)制796.703125轉(zhuǎn)換八進(jìn)制為1434.55
上面的方法大家可以驗(yàn)證一下,你可以先將十進(jìn)制轉(zhuǎn)換涕癣,然后在轉(zhuǎn)換為八進(jìn)制咒吐,這樣看得到的結(jié)果是否一樣
六、十六進(jìn)制與十進(jìn)制的轉(zhuǎn)換
(1)十六進(jìn)制轉(zhuǎn)換為十進(jìn)制
方法:按權(quán)相加法
即將十六進(jìn)制每位上的數(shù)乘以位權(quán)属划,然后相加之和即是十進(jìn)制數(shù)恬叹。
16進(jìn)制就是逢16進(jìn)1,但我們只有0~9這十個(gè)數(shù)字同眯,所以我們用A绽昼,B,C须蜗,D硅确,E,F(xiàn)這六個(gè)字母來(lái)分別表示10明肮,11菱农,12,13柿估,14循未,15。字母不區(qū)分大小寫(xiě)秫舌。
十六進(jìn)制數(shù)的第0位的權(quán)值為16的0次方的妖,第1位的權(quán)值為16的1次方绣檬,第2位的權(quán)值為16的2次方……
所以,在第N(N從0開(kāi)始)位上嫂粟,如果是是數(shù) X (X 大于等于0娇未,并且X小于等于 15,即:F)表示的大小為 X * 16的N次方星虹。
舉個(gè)栗子:將十六進(jìn)數(shù) 0X5FA5轉(zhuǎn)為十進(jìn)制數(shù)
第0位:5 *16^0 = 5
第1位:A*16^1 = 10*16^1 = 160
第2位:F*16^2?= 15*16^2 = 3840
第3位:5*16^3 = 20480
將十六進(jìn)數(shù) 0X5FA5轉(zhuǎn)為十進(jìn)制數(shù)即24485
可以看出零抬,所有進(jìn)制換算成10進(jìn)制,關(guān)鍵在于各自的權(quán)值不同宽涌。
(2)十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
十進(jìn)制轉(zhuǎn)換成十六進(jìn)制有兩種方法:
1)間接法:先將十進(jìn)制轉(zhuǎn)換成二進(jìn)制平夜,然后將二進(jìn)制又轉(zhuǎn)換成十六進(jìn)制。
2)直接法:前面我們講過(guò)护糖,十六進(jìn)制是由二進(jìn)制衍生而來(lái)的褥芒,因此我們可以采用與十進(jìn)制轉(zhuǎn)換為二進(jìn)制相類(lèi)似的方法,還是整數(shù)部分的轉(zhuǎn)換和小數(shù)部分的轉(zhuǎn)換嫡良。
下面來(lái)具體講解一下直接法:
整數(shù)部分
方法:除16取余法
即每次將整數(shù)部分除以16锰扶,余數(shù)為該位權(quán)上的數(shù),而商繼續(xù)除以16寝受,余數(shù)又為上一個(gè)位權(quán)上的數(shù)坷牛,這個(gè)步驟一直持續(xù)下去,直到商為0為止很澄。另外京闰,所得到的商的最后一位余數(shù)是所求二進(jìn)制數(shù)的最高位。最后讀數(shù)時(shí)甩苛,從最后一個(gè)余數(shù)起蹂楣,一直到最前面的一個(gè)余數(shù)。
小數(shù)部分
方法:乘16取整法
即將小數(shù)部分乘以16讯蒲,然后取整數(shù)部分痊土,剩下的小數(shù)部分繼續(xù)乘以16,然后取整數(shù)部分墨林,剩下的小數(shù)部分又乘以16赁酝,一直取到小數(shù)部分為0為止。如果永遠(yuǎn)不能為零旭等,就同十進(jìn)制數(shù)的四舍五入一樣酌呆,暫取個(gè)名字叫3舍4入。故該法稱(chēng)“乘基取整法”
例:將十進(jìn)制數(shù)120.12轉(zhuǎn)換為十六進(jìn)制數(shù)
解:先將這個(gè)數(shù)字分為整數(shù)部分120和小數(shù)部分0.12
因此搔耕,得到結(jié)果十進(jìn)制120.12轉(zhuǎn)換十六進(jìn)制為0x78.1eb851eb852
七隙袁、Java代碼測(cè)試十進(jìn)制分別轉(zhuǎn)換為十六進(jìn)制,二進(jìn)制,八進(jìn)制
核心思想:余數(shù)定理
測(cè)試類(lèi):
/**
* 測(cè)試:十進(jìn)制數(shù)分別轉(zhuǎn)換為十六進(jìn)制藤乙,二進(jìn)制猜揪,八進(jìn)制數(shù)
* 核心思想:余數(shù)定理
*/publicclassDataConvertDemo{publicstaticvoidmain(String[] args){inta =27, b =37, c =47;System.out.print("十進(jìn)制數(shù)"+ a +"=>十六進(jìn)制輸出:");cha_16(a);System.out.println();System.out.print("十進(jìn)制數(shù)"+ b +"=>二進(jìn)制輸出:");cha_2(b);System.out.println();System.out.print("十進(jìn)制數(shù)"+ c +"=>八進(jìn)制輸出:");cha_8(c);}/**
*
* 轉(zhuǎn)為16進(jìn)制
*/staticvoidcha_16(intn){if(n >=16) {cha_16(n /16);}if(n %16<10) {System.out.print(n %16);}else{System.out.print((char) (n %16+55));}}/**
* 轉(zhuǎn)為2進(jìn)制
*/staticvoidcha_2(intn){if(n >=2){cha_2(n /2);}System.out.print(n %2);}/**
* 轉(zhuǎn)為8進(jìn)制
*/staticvoidcha_8(intn){if(n >=8) {cha_8(n /8);System.out.print(n %8);}else{System.out.print(n);}}}
測(cè)試結(jié)果:
十進(jìn)制數(shù)27=>十六進(jìn)制輸出:1B
十進(jìn)制數(shù)37=>二進(jìn)制輸出:100101
十進(jìn)制數(shù)47=>八進(jìn)制輸出:57