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