二進制代碼

二進制代碼

二進制代碼:由兩個基本字元'0'、'1'組成的代碼。其中,碼元:"一位"二進制代碼。碼字:N個碼元可以組成的不同組合,任意一個組合稱一個碼字。

基本介紹

  • 中文名:二進制代碼
  • 外文名:binary code
  • 代碼組成:0、1
  • 領域:信息科學
基本概念,發展歷史,內容移植,數制擴展,進制轉換,通用二進制,相關區別,

基本概念

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

發展歷史

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

內容移植

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

數制擴展

數制是人們利用符號進行計數的科學方法。數制有很多種,在計算機中常用的數制有:十進制二進制八進制十六進制
二進制代碼二進制代碼
十進制特點
人們通常使用的是十進制
形式:有0,1,2….9十個基本字元組成
運算規律:十進制數運算是按“逢十進一”的規則進行的.
在計算機中,除了十進制數外,經常使用的數制還有二進制數十六進制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則.
二進制特點
形式:它由兩個基本字元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
缺點
採用二進制計數制,對於計算機等數字系統來說,運算、存儲和傳輸極為方便,然而,二進制數書寫起來很不方便。為此人們經常採用八進制計數制和十六制計數制進行書寫或列印。
八進制數
形式有數字0至7組成。
運算規律:逢八進一。
十六進制數
形式:它由十六個字元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,個位的0表示0個10^0,即0。
一個二進制數110,其中高位的1表示1個2^2,即4,低位的1表示1個2^1,即2,最低位的0表示0個2^0,即0。
一個十六進制數110,其中高位的1表示1個16^2,即256,低位的1表示1個16^1,即16,最低位的0表示0個16^0,即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+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,逆序排列餘數即可得到――簡稱除二取余法.
例:將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就可以了.
例:將25轉換為十六進制數
解:25÷16=1餘數9
1÷16=0餘數1
所以25=(19)16
交叉轉換
由於2^3=8,2^4=16,所以一位八進制數所能表示的數值恰好等於三位二進制數能表示的數值,而一位十六進制數與四位二進制數能表示的數值正好相當,因此八進制、十六進制與二進制數之間的轉換極為方便。
(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位
計算器:
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隻是舉例用,實際不是)
機器語言:又稱機器碼,是用"二進制代碼指令"表達(不是二進制代碼)的計算機語言

熱門詞條

聯絡我們