淺析進制轉(zhuǎn)換在計算機應(yīng)用中的技巧
1、二進制的使用意義
一種新處置器的盛行,離不開響應(yīng)軟件的支撐。開拓新的處置器能夠會由于落空響應(yīng)軟件的支撐而影響其推行使用和市場前景;另一方面,得不到普遍使用和必然市場份額的處置器也很可貴到豐厚的軟件支撐。這種處置器和支撐軟件之間互相鉗制的關(guān)系,既使得新處置器的設(shè)計不得不思索兼容老處置器,也障礙了新處置器的推出。在這種狀況下,研討若何把支撐老處置器的軟件移植到新的處置器上,使新的處置器從降生之初就有豐厚的軟件,不只對軟件重用有嚴(yán)重意義,更可以坦蕩處置器研發(fā)的思緒,促進新處置器的立異。
2、二進制在核算機使用中轉(zhuǎn)換經(jīng)常見的辦法
普通有三種辦法可以把老處置器上的代碼移植到新處置器上:
(1)在新處置器上供應(yīng)專門的運轉(zhuǎn)形式來執(zhí)行老代碼,如英特爾的安騰(Itanium)處置器專門設(shè)計了執(zhí)行x86代碼的硬件。
(2)把源順序從新編譯到新的指令集。
(3)運用軟件辦法,分析或翻譯使用順序。
第一種辦法,明顯無法應(yīng)用新處置器的一些進步前輩特征,落空了開拓新處置器的意義,而且添加了新處置器的硬件復(fù)雜度,甚至還會影響原有代碼的執(zhí)行效率;第二種辦法可以到達很好的效率,但并不老是可行,由于有些順序曾經(jīng)沒有源代碼,有些順序依靠于共享代碼庫,而這些共享代碼以目的代碼方式呈現(xiàn),紛歧定能獲得源碼,有些源順序言語沒有編譯到新指令集的編譯器,此外操作系統(tǒng)的差別還能夠使得只要修正源代碼才干從新編譯這些例程(比方與圖形相關(guān)的代碼)。
因而第三種辦法,稱之為二進制翻譯(Binary Translation)應(yīng)運而生。它是一種直接翻譯可執(zhí)行二進制順序的技能,可以把一種處置器上的二進制順序翻譯到別的一種處置器上執(zhí)行。它使得分歧處置器之間的二進制順序可以很輕易地互相移植,擴展了硬件/軟件的合用局限,有助于打破前面提到的處置器和支撐軟件之間相互掣肘影響立異的場面。二進制翻譯也是一種編譯技能,它與傳統(tǒng)編譯的差異在于其編譯處置對象分歧。傳統(tǒng)編譯處置的對象是某一種高級言語,經(jīng)由編譯處置生成某種機械的目的代碼;二進制翻譯處置的對象是某種機械的二進制代碼,該二進制代碼是經(jīng)由傳統(tǒng)編譯生成的,經(jīng)由二進制翻譯處置后生成另一種機械的二進制代碼。依照傳統(tǒng)編譯順序前端、中端和后端的劃分,我們可以了解為二進制翻譯是擁有非凡前端的編譯器。因而,更快且有用的進行進制轉(zhuǎn)換就成為很主要的工作。
3、進制之間的互相轉(zhuǎn)換技巧
3.1 二進制轉(zhuǎn)換為十進制
(1)二進制轉(zhuǎn)換為十進制的傳統(tǒng)辦法—“按權(quán)睜開”法
由二進制數(shù)轉(zhuǎn)換成十進制數(shù)的根本做法是,把二進制數(shù)起首寫成加權(quán)系數(shù)睜開式,然后按十進制加律例則乞降。這種做法稱為“按權(quán)睜開”法。
二進制數(shù)第0位的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方……
例如,設(shè)有一個二進制數(shù):01100100,轉(zhuǎn)換為十進制數(shù)為:
下面是豎式:
01100 100 換算成 十進制
(01100 100)B=(100)D
注:B透露表現(xiàn)二進制,O透露表現(xiàn)八進制,D透露表現(xiàn)十進制,H透露表現(xiàn)十六進制。
(2)二進制轉(zhuǎn)換為十進制的技巧辦法—“直接相加”算法。
依據(jù)進制轉(zhuǎn)化的道理可知,二進制轉(zhuǎn)化為十進制時,都與2的次方數(shù)有關(guān),即從低位到高位順次為1、2、4、8、16、32、64……,1的位數(shù)有用,0的位數(shù)無效,如許就可以依據(jù)二進制對應(yīng)的位數(shù)直接算加法。
例:將上面的二進制數(shù):0110 0100,轉(zhuǎn)換為10進制為:
后果直接算加法:64+32+4=100
即(01100 100)B=(100)D
3.2 十進制轉(zhuǎn)換為二進制
3.2.1 十進制轉(zhuǎn)換為二進制的傳統(tǒng)辦法—“除2取余”法
十進制數(shù)轉(zhuǎn)換為二進制數(shù)時,因為整數(shù)和小數(shù)的轉(zhuǎn)換辦法分歧,所以先將十進制數(shù)的整數(shù)局部和小數(shù)局部辨別轉(zhuǎn)換后,再加以兼并。十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)采用“除2取余,逆序陳列”法。詳細(xì)做法是:用2去除十進制整數(shù),可以獲得一個商和余數(shù);再用2去除商,又會獲得一個商和余數(shù),如斯進行,直到商為零時為止,然后把先獲得的余數(shù)作為二進制數(shù)的低位有用位,后獲得的余數(shù)作為二進制數(shù)的高位有用位,順次陳列起來。 十進制小數(shù)轉(zhuǎn)換成二進制小數(shù)采用“乘2取整,挨次陳列”法。詳細(xì)做法是:用2乘十進制小數(shù),可以獲得積,將積的整數(shù)局部掏出,再用2乘余下的小數(shù)局部,又獲得一個積,再將積的整數(shù)局部掏出,如斯進行,直到積中的小數(shù)局部為零,或許到達所要求的精度為止。然后把掏出的整數(shù)局部按挨次陳列起來,先取的整數(shù)作為二進制小數(shù)的高位有用位,后取的整數(shù)作為低位有用位。
例:將十進制數(shù)302.25轉(zhuǎn)換為二進制數(shù)
(1)整數(shù)局部:
302/2=151余0
151/2=75余1
75/2=37余1
37/2=18余1
18/2=9余0
9/2=4余1
4/2=2余0
2/2=1 余0
1/2=0余1
(302)D=(100101110)B
(2)小數(shù)局部:
0.25
X 2
_______________
0.50 (整數(shù)局部0為高位)
X 2
_______________
1.00 (整數(shù)局部1為低位)
(0.25)D=(0.01)B
故(302.25)D=(100101110.01)B
3.2.2 十進制轉(zhuǎn)換為二進制的技巧辦法—因式分化法
依據(jù)進制轉(zhuǎn)化的道理可知,十進制轉(zhuǎn)化為二進制時,都與2的次方數(shù)有關(guān),即從低位到高位順次為1、2、4、8、16、32、64……,1的位數(shù)有用,0的位數(shù)無效,如許就可以依據(jù)二進制對應(yīng)的位數(shù)按上面的數(shù)進行因式分化。
將十進制數(shù)302.25轉(zhuǎn)換為二進制數(shù)
(1)整數(shù)局部:
即:(302.25)D=(100101110)B
(2)小數(shù)局部:
整數(shù)的轉(zhuǎn)換是準(zhǔn)確的,小數(shù)的轉(zhuǎn)換能夠呈現(xiàn)無量小數(shù)或輪回小數(shù)的狀況。此時需求進行舍入處置以截斷,所以小數(shù)的轉(zhuǎn)換能夠略有偏向。用上例辦法獲得(0.25)D=(0.01)B
故(302.25)D=(100101110.01)B
3.3 八進制與二進制的轉(zhuǎn)換
因為81=23,闡明八進制的一位對應(yīng)二進制的三位
(1)將八進制轉(zhuǎn)換為二進制:
例:將八進制的37.416轉(zhuǎn)換成二進制數(shù):
(2)將二進制轉(zhuǎn)換為八進制:
例:將二進制的10110.0011轉(zhuǎn)換成八進制:
3.4 十六進制與二進制的轉(zhuǎn)換
因為161=24,闡明十六進制的一位對應(yīng)二進制的四位
(1)十六進制轉(zhuǎn)換為二進制
例:將十六進制數(shù)5DF.9 轉(zhuǎn)換成二進制:
(2)二進制轉(zhuǎn)換為十六進制
例:將二進制數(shù)1100001.111 轉(zhuǎn)換成十六進制:
3.5 十進制與八進制、十六進制的轉(zhuǎn)換
將十進制轉(zhuǎn)換為八進制、十六進制首要經(jīng)過二進制造為橋梁進行轉(zhuǎn)換,辦法同上。
即:十進制←→二進制←→八進制;十進制←→二進制←→十六進制。
總之,進制在核算機信息技能中使用普遍,特殊是二進制,已頻頻使用于日常生涯中,特殊是二進制與十進制之間的轉(zhuǎn)化作為各進制之間轉(zhuǎn)化的橋梁。凡間引見的進制將的轉(zhuǎn)化,是從理論上處理問題,而實踐使用中不太適用。就拿測驗來說,測驗時碰見一個大的十進制整數(shù)數(shù)轉(zhuǎn)換為二進制數(shù),采用“除2取余”的辦法不只費工夫還輕易犯錯,假如采用本文所述的因式分化法來做則簡略、直觀,適用性更強,在編程使用中也是如斯。
更多計算機與外設(shè)信息請關(guān)注:21ic計算機與外設(shè)頻道