二進位代碼

二進位代碼

二進位就是當到2后就進一位。比如0+1=1,1+1=10,10+1=11,11+1=100……特徵是只有0和1 \n一串代碼只有0和1構成就是二進位代碼。

正文


二進位代碼
二進位代碼
二進位就是當到2后就進一位。比如0+1=1,1+1=10,10+1=11,11+1=100……特徵是只有0和1
一串代碼只有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位