關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 淺析進制轉換在計算機應用中的技巧

        淺析進制轉換在計算機應用中的技巧

        作者: 時間:2012-10-19 來源:網絡 收藏

        1、二進制的使用意義

        本文引用地址:http://www.104case.com/article/202139.htm

        一種新處置器的盛行,離不開響應軟件的支撐。開拓新的處置器能夠會由于落空響應軟件的支撐而影響其推行使用和市場前景;另一方面,得不到普遍使用和必然市場份額的處置器也很可貴到豐厚的軟件支撐。這種處置器和支撐軟件之間互相鉗制的關系,既使得新處置器的設計不得不思索兼容老處置器,也障礙了新處置器的推出。在這種狀況下,研討若何把支撐老處置器的軟件移植到新的處置器上,使新的處置器從降生之初就有豐厚的軟件,不只對軟件重用有嚴重意義,更可以坦蕩處置器研發的思緒,促進新處置器的立異。

        2、二進制在核算機使用中轉換經常見的辦法

        普通有三種辦法可以把老處置器上的代碼移植到新處置器上:

        (1)在新處置器上供應專門的運轉形式來執行老代碼,如英特爾的安騰(Itanium)處置器專門設計了執行x86代碼的硬件。

        (2)把源順序從新編譯到新的指令集。

        (3)運用軟件辦法,分析或翻譯使用順序。

        第一種辦法,明顯無法應用新處置器的一些進步前輩特征,落空了開拓新處置器的意義,而且添加了新處置器的硬件復雜度,甚至還會影響原有代碼的執行效率;第二種辦法可以到達很好的效率,但并不老是可行,由于有些順序曾經沒有源代碼,有些順序依靠于共享代碼庫,而這些共享代碼以目的代碼方式呈現,紛歧定能獲得源碼,有些源順序言語沒有編譯到新指令集的編譯器,此外操作系統的差別還能夠使得只要修正源代碼才干從新編譯這些例程(比方與圖形相關的代碼)。

        因而第三種辦法,稱之為二進制翻譯(Binary Translation)應運而生。它是一種直接翻譯可執行二進制順序的技能,可以把一種處置器上的二進制順序翻譯到別的一種處置器上執行。它使得分歧處置器之間的二進制順序可以很輕易地互相移植,擴展了硬件/軟件的合用局限,有助于打破前面提到的處置器和支撐軟件之間相互掣肘影響立異的場面。二進制翻譯也是一種編譯技能,它與傳統編譯的差異在于其編譯處置對象分歧。傳統編譯處置的對象是某一種高級言語,經由編譯處置生成某種機械的目的代碼;二進制翻譯處置的對象是某種機械的二進制代碼,該二進制代碼是經由傳統編譯生成的,經由二進制翻譯處置后生成另一種機械的二進制代碼。依照傳統編譯順序前端、中端和后端的劃分,我們可以了解為二進制翻譯是擁有非凡前端的編譯器。因而,更快且有用的進行就成為很主要的工作。

        3、進制之間的互相轉換技巧

        3.1 二為十進制

        (1)二為十進制的傳統辦法—“按權睜開”法

        由二進制數轉換成十進制數的根本做法是,把二進制數起首寫成加權系數睜開式,然后按十進制加律例則乞降。這種做法稱為“按權睜開”法。

        二進制數第0位的權值是2的0次方,第1位的權值是2的1次方……

        例如,設有一個二進制數:01100100,轉換為十進制數為:

        下面是豎式:

        01100 100 換算成 十進制

        (01100 100)B=(100)D

        注:B透露表現二進制,O透露表現八進制,D透露表現十進制,H透露表現十六進制。

        (2)二進制轉換為十進制的技巧辦法—“直接相加”算法。

        依據進制轉化的道理可知,二進制轉化為十進制時,都與2的次方數有關,即從低位到高位順次為1、2、4、8、16、32、64……,1的位數有用,0的位數無效,如許就可以依據二進制對應的位數直接算加法。

        例:將上面的二進制數:0110 0100,轉換為10進制為:

        后果直接算加法:64+32+4=100

        即(01100 100)B=(100)D

        3.2 十進制轉換為二進制

        3.2.1 十進制轉換為二進制的傳統辦法—“除2取余”法

        十進制數轉換為二進制數時,因為整數和小數的轉換辦法分歧,所以先將十進制數的整數局部和小數局部辨別轉換后,再加以兼并。十進制整數轉換為二進制整數采用“除2取余,逆序陳列”法。詳細做法是:用2去除十進制整數,可以獲得一個商和余數;再用2去除商,又會獲得一個商和余數,如斯進行,直到商為零時為止,然后把先獲得的余數作為二進制數的低位有用位,后獲得的余數作為二進制數的高位有用位,順次陳列起來。 十進制小數轉換成二進制小數采用“乘2取整,挨次陳列”法。詳細做法是:用2乘十進制小數,可以獲得積,將積的整數局部掏出,再用2乘余下的小數局部,又獲得一個積,再將積的整數局部掏出,如斯進行,直到積中的小數局部為零,或許到達所要求的精度為止。然后把掏出的整數局部按挨次陳列起來,先取的整數作為二進制小數的高位有用位,后取的整數作為低位有用位。

        例:將十進制數302.25轉換為二進制數

        (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 十進制轉換為二進制的技巧辦法—因式分化法

        依據進制轉化的道理可知,十進制轉化為二進制時,都與2的次方數有關,即從低位到高位順次為1、2、4、8、16、32、64……,1的位數有用,0的位數無效,如許就可以依據二進制對應的位數按上面的數進行因式分化。

        將十進制數302.25轉換為二進制數

        (1)整數局部:

        即:(302.25)D=(100101110)B

        (2)小數局部:

        整數的轉換是準確的,小數的轉換能夠呈現無量小數或輪回小數的狀況。此時需求進行舍入處置以截斷,所以小數的轉換能夠略有偏向。用上例辦法獲得(0.25)D=(0.01)B

        故(302.25)D=(100101110.01)B

        3.3 八進制與二進制的轉換

        因為81=23,闡明八進制的一位對應二進制的三位

        (1)將八進制轉換為二進制:

        例:將八進制的37.416轉換成二進制數:

        (2)將二進制轉換為八進制:

        例:將二進制的10110.0011轉換成八進制:

        3.4 十六進制與二進制的轉換

        因為161=24,闡明十六進制的一位對應二進制的四位

        (1)十六進制轉換為二進制

        例:將十六進制數5DF.9 轉換成二進制:

        (2)二進制轉換為十六進制

        例:將二進制數1100001.111 轉換成十六進制:

        3.5 十進制與八進制、十六進制的轉換

        將十進制轉換為八進制、十六進制首要經過二進制造為橋梁進行轉換,辦法同上。

        即:十進制←→二進制←→八進制;十進制←→二進制←→十六進制。

        總之,進制在核算機信息技能中使用普遍,特殊是二進制,已頻頻使用于日常生涯中,特殊是二進制與十進制之間的轉化作為各進制之間轉化的橋梁。凡間引見的進制將的轉化,是從理論上處理問題,而實踐使用中不太適用。就拿測驗來說,測驗時碰見一個大的十進制整數數轉換為二進制數,采用“除2取余”的辦法不只費工夫還輕易犯錯,假如采用本文所述的因式分化法來做則簡略、直觀,適用性更強,在編程使用中也是如斯。

        更多計算機與外設信息請關注21ic計算機與外設頻道



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 沙湾县| 靖西县| 九龙城区| 鄂州市| 莆田市| 庄河市| 台山市| 法库县| 禹州市| 佛坪县| 财经| 牙克石市| 陇川县| 平山县| 兰溪市| 永新县| 炎陵县| 开远市| 辰溪县| 天等县| 固始县| 多伦县| 喀什市| 交口县| 三亚市| 南宁市| 华蓥市| 铅山县| 特克斯县| 榆树市| 南投县| 兴山县| 湖州市| 合阳县| 涟水县| 左云县| 浦江县| 拉孜县| 西藏| 海盐县| 荣昌县|