二進位數

標籤: 暫無標籤

603

更新時間: 2013-09-05

廣告

二進位是計算技術中廣泛採用的一種數制。二進位數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」。二進位數據也是採用位置計數法,其位權是以2為底的冪。18世紀德國數理哲學大師萊布尼茲從他的傳教士朋友鮑威特寄給他的拉丁文譯本《易經》中,讀到了八卦的組成結構,驚奇地發現其基本素數(0)(1),即《易經》的陰爻--和__陽爻,其進位制就是二進位,並認為這是世界上數學進位中最先進的。20世紀被稱作第三次科技革命的重要標誌之一的計算機的發明與應用,其運算模式正是二進位。它不但證明了萊布尼茲的原理是正確的,同時也證明了《易經》數理學是很了不起的。

二進位數 -發展概況
二進位數二進位數
二進位數是逢2進位的進位制,0、1是基本算符;計算機運算基礎採用二進位。電腦的基礎是二進位。在早期設計的機械計算裝置中,使用的不是二進位,而是十進位或者其他進位,利用齒輪的不同位置表示不同的數值,這種計算裝置可能更加接近人類的思想方式。比如說一個計算設備有十個齒輪,它們級連起來,每一個齒輪有十格,小齒輪轉一圈大齒輪走一格。這就是一個簡單的十位十進位的數據表示設備了,可以表示0到999999999的數字。配合其他的一些機械設備,這樣一個簡單的基於齒輪的裝置就可以實現簡單的十進位加減法了。這種通過不同的位置上面不同的符號表示數值的方法就是進位表示方法。

常用的進位主要是十進位(因為我們有十個手指,所以十進位是比較合理的選擇,用手指可以表示十個數字,0的概念直到很久以後才出現,所以是1-10而不是0-9)。電子計算機出現以後,使用電子管來表示十種狀態過於複雜,所以所有的電子計算機中只有兩種基本的狀態,開和關。也就是說,電子管的兩種狀態決定了以電子管為基礎的電子計算機採用二進位來表示數字和數據。常用的進位還有8進位和16進位,在電腦科學中,經常會用到16進位,而十進位的使用非常少,這是因為16進位和二進位有天然的聯繫:4個二進位位可以表示從0到15的數字,這剛好是1個16進位位可以表示的數據,也就是說,將二進位轉換成16進位只要每4位進行轉換就可以了。

廣告

二進位的「00101000」直接可以轉換成16進位的「38」。一個字是電腦中的基本存儲單元,根據計算機字長的不同,字具有不同的位數,現代電腦的字長一般是32位的,也就是說,一個字的位數是32。位元組是8位的數據單元,一個位元組可以表示0-255的數據。對於32位字長的現代電腦,一個字等於4個位元組,對於早期的16位的電腦,一個字等於2個位元組。

二進位數 -特性
二進位數二進位數
1、如果一個二進位數(整型)數的第零位的值是一,那麼這個數就是奇數;而如果該位是零,那麼這個數就是偶數。
2、如果一個二進位數的低端n位都是零,那麼這個數可以被2n整除。
3、如果一個二進位數的第n位是一,而其他各位都是零,那麼這個數等於2n。
4、如果一個二進位數的第零位到第n位(但不包含位n)都是一,而且其他各位都是零,那麼這個數等於2n-1。
5、將一個二進位數的所有位左移移位的結果是將該數乘以二。
6、將一個無符號二進位數的所有位右移一位的結果等效於該數除以二(這對有符號數不適用)。餘數會被下舍入(rounddown)
7、將兩個n位的二進位數相成可能會需要2*n位來保存結果。
8、將兩個n位的二進位數相加或者相減絕不會需要多於n 1位來保存結果。
9、將一個二進位數的所有位取反(就是將所有的一改為零,所有的零改為一)等效於將該數取負(改變符號)再將結果減一。
10、將任意給定個數的位表示的最大無符號二進位數加一的結果永遠是零。
11、零遞減(減一)的結果永遠是某個給定個數的位表示的最大無符號二進位數。
12、n位可以表示2n個不同的組合。
13、數2年包含n位,所有位都是一。
二進位數 -運算
二進位數二進位數
二進位數的運算除了有四則運算外,還可以有邏輯運算。下面分別予以介紹。

二進位數的四則運算

二進位數與十進位數一樣,同樣可以進行加、減、乘、除四則運算。其演算法規則如下:

加運算:0 0=0,0 1=1,1 0=1,1 1=10,#逢2進1;
減運算:1-1=0,1-0=1,0-0=0,0-1=1,#向高位借1當2;
乘運算:0×0=0,0×1=0,1×0=0,1×1=1,#只有同時為「1」時結果才為「1」;
除運算:二進位數只有兩個數(0,1),因此它的商是1或0。

加法運算步驟如下:

(1)首先是最右數碼位相加。這裡加數和被加數的最後一位分別為「0」和「1」,根據加法原則可以知道,相加後為「1」。
(2)再進行倒數第二位相加。這裡加數和被加數的倒數第二位都為「1」,根據加法原則可以知道,相加後為「(10)2」,此時把後面的「0」留下,而把第一位的「1」向高一位進「1」。
(3)再進行倒數第三位相加。這裡加數和被加數的倒數第二位都為「0」,根據加法原則可以知道,本來結果應為「0」,但倒數第二位已向這位進「1」了,相當於要加「被加數」、「加數」和「進位」這三個數的這個數碼位,所以結果應為0 1=1。
(4)最後最高位相加。這裡加數和被加數的最高位都為「1」,根據加法原則可以知道,相加後為「(10)2」。一位只能有一個數字,所以需要再向前進「1」,本身位留下「0」,這樣該位相加后就得到「0」,而新的最高位為「1

廣告

二進位數二進位數
減法運算步驟

(1)首先最後一位向倒數第二位借「1」,相當於得到了(10)2,也就是相當於十進位數中的2,用2減去1得1。
(2)再計算倒數第二位,因為該位同樣為「0」,不及減數「1」大,需要繼續向倒數第三位借「1」(同樣是借「1」當「2」),但因為它在上一步中已借給了最後一位「1」(此時是真實的「1」),則倒數第二位目前為1,與減數「1」相減后得到「0」。
(3)用同樣的方法倒數第三位要向它們的上一位借「1」(同樣是當「2」),但同樣已向它的下一位(倒數第二位)借給「1」(此時也是真實的「1」),所以最終得值也為「0」。
(4)被減數的倒數第四位儘管與前面的幾位一樣,也為「0」,但它所對應的減數倒數第四位卻為「0」,而不是前面幾位中對應的「1」,它向它的高位(倒數第五位)借「1」(相當於「2」)后,在借給了倒數第四位「1」(真實的「1」)后,仍有「1」余,1–0=1,所以該位結果為「1」。
(5)被減數的倒數第五位原來為「1」,但它借給了倒數第四位,所以最後為「0」,而此時減數的倒數第五位卻為「1」,這樣被減數需要繼續向它的高位(倒數第六位)借「1」(相當於「2」),2–1=1。
(6)被減數的最後一位本來為「1」,可是借給倒數第五位后就為「0」了,而減數沒有這個位,這樣結果也就是被減數的相應位值大小,此處為「0」。

廣告


在二進位數的加、減法運算中一定要聯繫上十進位數的加、減法運算方法,其實它們的道理是一樣的,也是一一對應的。在十進位數的加法中,進「1」仍就當「1」,在二進位數中也是進「1」當「1」。在十進位數減法中我們向高位借「1」當「10」,在二進位數中就是借「1」當「2」。而被借的數仍然只是減少了「1」,這與十進位數一樣。

二進位數二進位數
2.乘、除法運算

乘法運算示例
把二進位數中的「0」和「1」全部當成是十進位數中的「0」和「1」即可。根據十進位數中的乘法運算知道,任何數與「0」相乘所得的積均為「0」,這一點同樣適用於二進位數的乘法運算。只有「1」與「1」相乘才等於「1」。乘法運算步驟:

(1)首先是乘數的最低位與被乘數的所有位相乘,因為乘數的最低位為「0」,根據以上原則可以得出,它與被乘數(1110)2的所有位相乘后的結果都為「0」。
(2)再是乘數的倒數第二位與被乘數的所有位相乘,因為乘數的這一位為「1」,根據以上原則可以得出,它與被乘數(1110)2的高三位相乘后的結果都為「1」,而於最低位相乘后的結果為「0」。
(3)再是乘數的倒數第三位與被乘數的所有位相乘,同樣因為乘數的這一位為「1」,處理方法與結果都與上一步的倒數第二位一樣,不再贅述。
(4)最後是乘數的最高位與被乘數的所有位相乘,因為乘數的這一位為「0」,所以與被乘數(1110)2的所有位相乘后的結果都為「0」。
(5)然後再按照前面介紹的二進位數加法原則對以上四步所得的結果按位相加(與十進位數的乘法運算方法一樣),結果得到(1110)2×(0110)2=(1010100)2。

廣告

二進位數二進位數
除法運算步驟

(1)首先用「1」作為商試一下,相當於用「1」乘以除數「110」,然後把所得到的各位再與被除數的前4位「1001」相減。按照減法運算規則可以得到的餘數為「011」。
(2)因為「011」與除數「110」相比,不足以被除,所以需要向低取一位,最終得到「0111」,此時的數就比除數「110」大了,可以繼續除了。同樣用「1」作為商去除,相當於用「1」去乘除數「110」,然後把所得的積與被除數中當前四位「0111」相減。根據以上介紹的減法運算規則可以得到此步的餘數為「1」。
(3)因為「1」要遠比除數「110」小,被除數向前取一位後為「11」,仍不夠「110」除,所以此時需在商位置上用「0」作為商了。
(4)然後在被除數上繼續向前取一位,得到「110」。此時恰好與除數「110」完全一樣,結果當然是用「1」作為商,用它乘以除數「110」后再與被除數相減,得到的餘數正好為「0」。證明這兩個數能夠整除。
這樣一來,所得的商(1101)2就是兩者相除的結果。

廣告

二進位數 -轉換
二進位數各種數製表示的相互關係
四種常用的數制及它們之間的相互轉換

1.二進位與十進位間的相互轉換:

(1)二進位轉十進位

方法:「按權展開求和」
例:(1011.01)2
=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10

規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依獎遞增,而十分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。 注意:不是任何一個十進位小數都能轉換成有限位的二進位數。

(2)十進位轉二進位
十進位整數轉二進位數:「除以2取余,逆序排列」(短除反取余法
例:(89)10=(1011001)2
289
244……1
222……0
211……0
25……1
22……1
21……0
0……1

廣告

十進位小數轉二進位數:「乘以2取整,順序排列」(乘2取整法)
例:(0.625)10=(0.101)2
0.625
X2
1.251
X2
0.50
X2
1.01

二進位數二進位數
2.八進位與二進位的轉換:

二進位數轉換成八進位數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進位數的數字錶示,不足3位的要用「0」補足3位,就得到一個八進位數。

八進位數轉換成二進位數:把每一個八進位數轉換成3位的二進位數,就得到一個二進位數。
例:將八進位的37.416轉換成二進位數:
37.416
011111.100001110
即:(37.416)8=(11111.10000111)2
例:將二進位的10110.0011轉換成八進位:
010110.001100
26.14
即:(10110.011)2=(26.14)8

3.十六進位與二進位的轉換:
二進位數轉換成十六進位數:從小數點開始,整數部分向左、小數部分向右,每4位為一組用一位十六進位數的數字錶示,不足4位的要用「0」補足4位,就得到一個十六進位數。

二進位數二進位數
十六進位數轉換成二進位數:把每一個八進位數轉換成4位的二進位數,就得到一個二進位數。
例:將十六進位數5DF.9轉換成二進位:
5DF.9
010111011111.1001
即:(5DF.9)16=(10111011111.1001)2
例:將二進位數1100001.111轉換成十六進位:
01100001.1110
61.E
即:(1100001.111)2=(61.E)16

4、整數的數制轉換

採用「基數除法」,具體步驟如下:
(1)將給定的十進位整數除以基數2,餘數便是等值的二進位的最低位。
(2)將上一步的商再除以基數2,餘數便是等值的二進位數的次低位。
(3)重複步驟2,直到最後所得的商等於0為止。各次除得的餘數,便是二進位各位的數,最後一次的餘數是最高

廣告