複製鏈接
請複製以下鏈接發送給好友

二進制代碼

鎖定
二進制代碼:由兩個基本字符'0'、'1'組成的代碼。其中,碼元:"一位"二進制代碼。碼字:N個碼元可以組成的不同組合,任意一個組合稱一個碼字。
中文名
二進制代碼
外文名
binary code
代碼組成
0、1
領    域
信息科學

二進制代碼基本概念

構成形式
二進制代碼,顧名思義,由兩個基本字符0,1組成的代碼。 [1] 
運算規律
二進制代碼運算規律是逢二進一。比如十進制1,二進制也是1;但是十進制2(1+1),二進制為10;十進制3(1+1+1),二進制為11;十進制4,二進制為100,以此類推……也就是説,用二進制做十進制的加法時是逢二進一。 [1] 
表述方式
為區別於其它進制代碼,二進制代碼的書寫通常在數的右下方註上基數2,或加後面加B表示如(10110001)2。 [1] 
相關簡介
二進制代碼語言或稱為機器語言,計算機可以直接識別,不需要進行任何翻譯的語言。每台機器的指令,其格式和代碼所代表的含義都是硬性規定的,故稱之為面向機器的語言,也稱為機器語言。它是第一代的計算機語言機器語言對不同型號的計算機來説一般是不同的。 [1] 
直接用二進制代碼指令表達的計算機語言,指令是用0和1組成的一串代碼,它們有一定的位數,並分成若干段,各段的編碼表示不同的含義,例如某台計算機字長為16位,即有 16個二進制數組成一條指令或其它信息。16個0和1可組成各種排列組合,通過線路變成電信號,讓計算機執行各種不同的操作。 [1] 
缺點説明
1.大量繁雜瑣碎的細節牽制着程序員,使他們不可能有更多的時間和精力去從事創造性的勞動,去執行對他們來説更為重要的任務。如確保程序的正確性、高效性。 [1] 
2.二進制代碼語言程序員既要駕馭程序設計的全局又要深入每一個局部直到實現的細節,即使智力超羣的程序員也常常會顧此失彼,屢出差錯,因而所編出的程序可靠性差,且開發週期長。 [1] 
3.由於用二進制代碼語言進行程序設計的思維和表達方式與人們的習慣大相徑庭,只有經過較長時間職業訓練的程序員才能勝任,使得程序設計曲高和寡。 [1] 
4.因為它的書面形式全是"密"碼,所以可讀性差,不便於交流與合作。 [1] 
5.因為它嚴重地依賴於具體的計算機,所以可移植性差,重用性差。 [1] 

二進制代碼發展歷史

在早期設計的機械計算裝置中,使用的不是二進制,而是十進制或者其他進制,利用齒輪的不同位置表示不同的數值,這種計算裝置更加接近人類的思想方式。 [1] 
二進制代碼 二進制代碼
比如説一個計算設備有十個齒輪,它們接連起來,每一個齒輪有十格,小齒輪轉一圈大齒輪走一格。這就是一個簡單的十位十進制數據表示設備了,可以表示0到999999999的數字。 配合其他的一些機械設備,這樣一個簡單的基於齒輪的裝置就可以實現簡單的十進制加減法了。 [1] 
這種通過不同的位置上面不同的符號表示數值的方法就是進製表示方法。
常用的進制主要是十進制(因為我們有十個手指,所以十進制是比較合理的選擇,用手指可以表示十個數字,0的概念直到很久以後才出現,所以是1-10而不是0-9)。
電子計算機出現以後,使用電子管來表示十種狀態過於複雜,所以所有的電子計算機中只有兩種基本的狀態,開和關。也就是説,電子管的兩種狀態決定了以電子管為基礎的電子計算機採用二進制來表示數字和數據。
常用的進制還有8進制和16進制,在電腦科學中,經常會用到16進制,而十進制的使用非常少,這是因 為16進制和二進制有天然的聯繫:4個二進制位可以表示從0到15的數字,這剛好是1個16進制位可以表示的數據,也就是説,將二進制轉換成16進制只要每4位進行轉換就可以了。二進制的“00101000”直接可以轉換成16進制的“28”。 [1] 
字節是由8位組成的存儲單元,是計算機中最小的存儲單位。計算機具有不同的字,字具有不同的位數,字長就是用來表示字的位數的,字長是計算機處理數據的能力,即一個時刻可以處理的數據位數。現代電腦的字長一般是32位、64位。 [1] 
對於32位字長的現代電腦,一個字長等於4個字節,對於早期的16位的電腦,一個字長等於2個字節。 [2] 

二進制代碼內容移植

一種新處理器的流行,離不開相應軟件的支持。開發新的處理器可能會因為失去相應軟件的支持而影響其推廣應用和市場前景;另一方面,得不到廣泛應用和一定市場份額的處理器也很難得到豐富的軟件支持。這種處理器和支持軟件之間相互鉗制的關係,既使得新處理器的設計不得不考慮兼容老處理器,也阻礙了新處理器的推出。在這種情況下,研究如何把支持老處理器的軟件移植到新的處理器上,使新的處理器從誕生之初就有豐富的軟件,不僅對軟件重用有重大意義,更可以開闊處理器研發的思路,促進新處理器的創新。 [1] 
移植方法
二進制代碼 二進制代碼
一般有三種方法可以把老處理器上的代碼移植到新處理器上:
1. 在新處理器上提供專門的運行模式來執行老代碼,如英特爾安騰Itanium)處理器專門設計了執行x86代碼的硬件。
2. 把源程序重新編譯到新的指令集。
3. 使用軟件方法,解釋或翻譯應用程序
各方法優缺點
第一種方法,顯然無法利用新處理器的一些先進特性,失去了開發新處理器的意義,並且增加了新處理器的硬件複雜度,甚至還會影響原有代碼的執行效率。 [1] 
第二種方法可以達到很好的效率,但並不總是可行,因為有些程序已經沒有源代碼,有些程序依賴於共享代碼庫,而這些共享代碼以目標代碼形式出現,不一定能得到源碼,有些源程序語言沒有編譯到新指令集編譯器,此外操作系統的差異還可能使得只有修改源代碼才能重新編譯這些例程(比如與圖形相關的代碼)。 [1] 
因此第三種方法,稱之為二進制翻譯(Binary Translation)應運而生。它是一種直接翻譯可執行二進制程序的技術,能夠把一種處理器上的二進制程序翻譯到另外一種處理器上執行。它使得不同處理器之間的二進制程序可以很容易地相互移植,擴大了硬件/軟件的適用範圍,有助於打破前面提到的處理器和支持軟件之間互相掣肘影響創新的局面。 [1] 
關於二進制翻譯
二進制翻譯也是一種編譯技術,它與傳統編譯的差別在於其編譯處理對象不同。傳統編譯處理的對象是某一種高級語言,經過編譯處理生成某種機器的目標代碼;而二進制翻譯處理的對象是某種機器的二進制代碼,該二進制代碼是經過傳統編譯生成的,經過二進制翻譯處理後生成另一種機器的二進制代碼。按照傳統編譯程序前端、中端和後端的劃分,我們可以理解為二進制翻譯是擁有特殊前端的編譯器 [1] 

二進制代碼數制擴展

二進制代碼 二進制代碼
數制是人們利用符號進行計數的科學方法。數制有很多種,在計算機中常用的數制有:十進制二進制八進制和十六進制。 [1] 
十進制特點
人們通常使用的是十進制
形式:有0,1,2….9十個基本字符組成
運算規律:十進制數運算是按“逢十進一”的規則進行的.
在計算機中,除了十進制數外,經常使用的數制還有二進制數十六進制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則. [1] 
二進制特點
形式:它由兩個基本字符0,1組成、
運算規律:二進制數運算規律是逢二進一。
為區別於其它進制數,二進制數的書寫通常在數的右下方註上基數2,或加後面加B表示。
例如:二進制數10110011可以寫成(10110011)2,或寫成10110011B,對於十進制數可以不加註.計算機中的數據均採用二進制數表示,這是因為二進制數具有以下特點 [1] 
1) 二進制數中只有兩個字符0和1,表示具有兩個不同穩定狀態的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,晶體管的導通和截止等。 [1] 
2) 二進制數運算簡單,大大簡化了計算中運算部件的結構。 [1] 
二進制數的運算
二進制數的加法和乘法運算如下:
0+0=0 0+1=1+0=1 1+1=10
0×0=0 0×1=1×0=0 1×1=1
缺點
採用二進制計數制,對於計算機等數字系統來説,運算、存儲和傳輸極為方便,然而,二進制數書寫起來很不方便。為此人們經常採用八進制計數制和十六制計數制進行書寫或打印。 [1] 
八進制數
形式有數字0至7組成。
運算規律:逢八進一。 [1] 
十六進制數
形式:它由十六個字符0~9以及A,B,C,D,E,F組成(它們分別表示十進制數0~15)
運算規律:十六進制數運算規律是逢十六進一。
例如:十六進制數4AC8可寫成(4AC8)16,或寫成4AC8H。
數的位權概念
一個十進制數110,其中百位上的1表示1個10^2,既100,十位的1表示1個10^1,即10,個位的1表示1個10^0,即1。 [1] 
一個二進制數110,其中高位的1表示1個2^2,即4,低位的1表示1個2^1,即2,最低位的0表示0個2^0,即0。 [1] 
一個十六進制數110,其中高位的1表示1個16^2,即256,低位的1表示1個16^1,即16,最低位的0表示0個16^0,即0。 [1] 
可見,在數制中,各位數字所表示值的大小不僅與該數字本身的大小有關,還與該數字所在的位置有關,我們稱這關係為數的位權 [1] 
十進制數的位權是以10為底的,二進制數的位權是以2為底的冪,十六進制數的位權是以16為底的冪。數位由高向低,以降冪的方式排列。 [1] 

二進制代碼進制轉換

轉換為十進制
二進制數、八進制數、十六進制數轉換為十進制數的規律是相同的。把二進制數(或十六進制數)按位權形式展開多項式和的形式,求其最後的和,就是其對應的十進制數——簡稱“按權求和”. [1] 
例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+0.25
=9.25
例2.把(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連續除十進制數,直到商為0,逆序排列餘數即可得到――簡稱除二取餘法. [1] 
例:將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轉換成8和16就可以了. [1] 
例:將25轉換為十六進制數
解:25÷16=1餘數9
1÷16=0餘數1
所以25=(19)16
交叉轉換
由於2^3=8,2^4=16,所以一位八進制數所能表示的數值恰好等於三位二進制數能表示的數值,而一位十六進制數與四位二進制數能表示的數值正好相當,因此八進制、十六進制與二進制數之間的轉換極為方便。 [1] 
(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位 [3] 
計算器:
Windows XP自帶的計算器
注:在Windows XP自帶的計算器中對錶示範圍進行了限制,“字節”,只能表示到十進制的255,也就是8個1,“單字”,最多可以表示16個1,“雙字”,最多可表示32個1,“四字”,最多表示64個1.

二進制代碼通用二進制

通用二進制(Universal binary)是蘋果電腦公司提出的一種程序代碼,使程序能以本地程序的形式運行在使用PowerPC或者英特爾微處理器(x86)的麥金塔電腦上,在同一個程序包中同時為兩種架構提供最理想的性能。硬件方面,蘋果電腦公司已經將其產品線上的所有麥金塔電腦在2006年內轉為英特爾處理器,相對應的軟件方面,蘋果最早是在2005年蘋果電腦全球研發者大會上就發佈了通用二進制的內容來適應這種轉換。
當程序在操作系統中運行後,將自動檢測通用二進制代碼,然後根據使用的架構自動選擇合適的代碼來執行,因此實現無損的本地程序運行速度。

二進制代碼相關區別

二進制編碼:用不同碼字表示不同的信息的方法就叫二進制編碼。如用1111表示15。區別例子:對15進行二進制編碼的結果為1111,共需要4位二進制代碼。
二進制代碼指令:是機器語言的指令集體系結構的表示方式。好比"加"在彙編中用add表示,類似的在這個中則是用1100表示(1100只是舉例用,實際不是)
機器語言:又稱機器碼,是用"二進制代碼指令"表達(不是二進制代碼)的計算機語言
參考資料
  • 1.    方維等.數字邏輯.北京:科學技術出版社,2011年:1·2節的第四頁至第七頁
  • 2.    曾建潮, 孫承意. 具有二進制編碼的思維進化方法[J]. 航空計算技術, 1999(4):42-45.
  • 3.    奚茂龍, 孫俊, 吳勇. 一種二進制編碼的量子粒子羣優化算法[J]. 控制與決策, 2010, 25(1):99-104.