一串代碼只有0和1構成就是二進制代碼
十六進制和二進制一樣,當加到16的時候才進位。
0+1=1,1+1=2,2+1=3,3+1=4,4+1=5,5+1=6,6+1=7,7+1=8,8+1=9,9+1=A,A+1=B,B+1=C,C+1=D,D+1=E,E+1=F,F+1=10……
二進制和十六進制的換算很簡單,先換算成十進制,從低到高為分別乘以2^0,2^1,2^2,2^3……(^表示乘方)比如100010就是2^1+2^6=2+64=66,然後再換算成十六進制就是22。
二進制通俗點說是逢二進一。是100101010111000,這種樣式的,裡面只有0和1;十六進制就是逢16進1;由0、1、2、3、4、……、9、A、B、C、D、E、F分別代表0~15。到十六就進1,如(16)十進制表示為16進制的(10);將二進制從低位開始,4位化一組就可以對應為十六進制了。
二進制轉換
又稱二進制轉換一種新處理器的流行,離不開相應軟體的支持。開發新的處理器可能會因為失去相應軟體的支持而影響其推廣套用和市場前景;另一方面,得不到廣泛套用和一定市場份額的處理器也很難得到豐富的軟體支持。這種處理器和支持軟體之間相互鉗制的關係,既使得新處理器的設計不得不考慮兼容老處理器,也阻礙了新處理器的推出。在這種情況下,研究如何把支持老處理器的軟體移植到新的處理器上,使新的處理器從誕生之初就有豐富的軟體,不僅對軟體重用有重大意義,更可以開闊處理器研發的思路,促進新處理器的創新。
一般有三種方法可以把老處理器上的代碼移植到新處理器上[1]:
1. 在新處理器上提供專門的運行模式來執行老代碼,如英特爾的安騰(Itanium)處理器專門設計了執行x86代碼的硬體。
2. 把源程式重新編譯到新的指令集。
3. 使用軟體方法,解釋或翻譯應用程式。
第一種方法,顯然無法利用新處理器的一些先進特性,失去了開發新處理器的意義,並且增加了新處理器的硬體複雜度,甚至還會影響原有代碼的執行效率;第二種方法可以達到很好的效率,但並不總是可行,因為有些程式已經沒有原始碼,有些程式依賴於共享代碼庫,而這些共享代碼以目標代碼形式出現,不一定能得到源碼,有些源程式語言沒有編譯到新指令集的編譯器,此外作業系統的差異還可能使得只有修改原始碼才能重新編譯這些例程(比如與圖形相關的代碼)。
因此第三種方法,稱之為二進制翻譯(Binary Translation)應運而生。它是一種直接翻譯可執行二進制程式的技術,能夠把一種處理器上的二進制程式翻譯到另外一種處理器上執行。它使得不同處理器之間的二進制程式可以很容易地相互移植,擴大了硬體/軟體的適用範圍,有助於打破前面提到的處理器和支持軟體之間互相掣肘影響創新的局面。
二進制翻譯也是一種編譯技術,它與傳統編譯的差別在於其編譯處理對象不同。傳統編譯處理的對象是某一種高級語言,經過編譯處理生成某種機器的目標代碼;二進制翻譯處理的對象是某種機器的二進制代碼,該二進制代碼是經過傳統編譯生成的,經過二進制翻譯處理後生成另一種機器的二進制代碼。按照傳統編譯程式前端、中端和後端的劃分,我們可以理解為二進制翻譯是擁有特殊前端的編譯器。
數制說明
數制是人們利用符號進行計數的科學方法。數制有很多種,在計算機中常用的數制有:十進制,二進制和十六進制。
1. 十進制數
人們通常使用的是十進制。它的特點有兩個:有0,1,2….9十個基本字元組成,十進制數運算是按“逢十進一”的規則進行的.
在計算機中,除了十進制數外,經常使用的數制還有二進制數和十六進制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則.
2. 二進制數
3. 二進制數有兩個特點:它由兩個基本字元0,1組成,二進制數運算規律是逢二進一。
為區別於其它進制數,二進制數的書寫通常在數的右下方註上基數2,或加後面加B表示。
例如:二進制數10110011可以寫成(10110011)2,或寫成10110011B,對於十進制數可以不加注.計算機中的數據均採用二進制數表示,這是因為二進制數具有以下特點:
1) 二進制數中只有兩個字元0和1,表示具有兩個不同穩定狀態的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,電晶體的導通和截止等。
2) 二進制數運算簡單,大大簡化了計算中運算部件的結構。
二進制數的加法和乘法運算如下:
0+0=0 0+1=1+0=1 1+1=10
0×0=0 0×1=1×0=0 1×1=1
由於二進制數在使用中位數太長,不容易記憶,所以又提出了十六進制數.
3.十六進制數
十六進制數有兩個基本特點:它由十六個字元0~9以及A,B,C,D,E,F組成(它們分別表示十進制數0~15),十六進制數運算規律是逢十六進一,鷯諂淥剖剖氖樾賜ǔT謔撓蟻路階⑸匣保叮蚣雍竺婕櫻缺硎盡?/SPAN>
例如:十六進制數4AC8可寫成(4AC8)16,或寫成4AC8H。
4. 數的位權概念
5. 一個十進制數110,其中百位上的1表示1個102,既100,十位的1表示1個101,即10,個位的0表示0個100,即0。
一個二進制數110,其中高位的1表示1個22,即4,低位的1表示1個21,即2,最低位的0表示0個20,即0。
一個十六進制數110,其中高位的1表示1個162,即256,低位的1表示1個161,即16,最低位的0表示0個160,即0。
可見,在數制中,各位數字所表示值的大小不僅與該數字本身的大小有關,還與該數字所在的位置有關,我們稱這關係為數的位權。
十進制數的位權是以10為底的冪,二進制數的位權是以2為底的冪,十六進制數的位權是以16為底的冪。數位由高向低,以降冪的方式排列。
進數制間轉換
1.二進制數、十六進制數轉換為十進制數(按權求和)二進制數、十六進制數轉換為十進制數的規律是相同的。把二進制數(或十六進制數)按位權形式展開多項式和的形式,求其最後的和,就是其對應的十進制數——簡稱“按權求和”.
例如:把(1001.01)2轉換為十進制數。
解:(1001.01)2
=1×23+0×22+0×21+1×20+0×2-1+1×2-2
=8+0+0+1+0.5+0.25
=9.75
把(38A.11)16轉換為十進制數
解:(38A.11)16
=3×162+8×16+10×160+1×16-1+1×16-2
=768+128+10+0.0625+0.0039
=906.0664
2.十進制數轉換為二進制數,十六進制數(除2/16取余法)
整數轉換.一個十進制整數轉換為二進制整數通常採用除二取余法,即用2連續除十進制數,直到商為0,逆序排列餘數即可得到――簡稱除二取余法.
例:將25轉換為二進制數
解:25÷2=12 餘數1
12÷2=6 餘數0
6÷2=3 餘數0
3÷2=1 餘數1
1÷2=0 餘數1
所以25=(11001)2
同理,把十進制數轉換為十六進制數時,將基數2轉換成16就可以了.
例:將25轉換為十六進制數
解:25÷16=1 餘數9
1÷16=0 餘數1
所以25=(19)16
3.二進制數與十六進制數之間的轉換
由於4位二進制數恰好有16個組合狀態,即1位十六進制數與4位二進制數是一一對應的.所以,十六進制數與二進制數的轉換是十分簡單的.
(1)十六進制數轉換成二進制數,只要將每一位十六進制數用對應的4位二進制數替代即可――簡稱位分四位.
例:將(4AF8B)16轉換為二進制數.
解: 4 A F 8 B
0100 1010 1111 1000 1011
所以(4AF8B)16=(1001010111110001011)2
(2)二進制數轉換為十六進制數,分別向左,向右每四位一組,依次寫出每組4位二進制數所對應的十六進制數――簡稱四位合一位.
例:將二進制數(111010110)2轉換為十六進制數.
解: 0001 1101 0110
1 D 6
所以(111010110)2=1D6H
轉換時注意最後一組不足4位時必須加0補齊4位