二進位制數的運算方法,電子計算機具有強大的運算能力,它可以進行兩種運算:算術運算和邏輯運算。
二進位制數的算術運算包括:加、減、乘、除四則運算,下面分別予以介紹。
根據「逢二進一」規則,二進位制數加法的法則為:
0+0=0
0+1=1+0=1
1+1=0 (進製為1)
1+1+1=1 (進製為1)
根據「借一有二」的規則,二進位制數減法的法則為:
0-0=0
1-1=0
1-0=1
0-1=1 (借位為1)
二進位制數乘法過程可仿照十進位制數乘法進行。但由於二進位制數只有0或1兩種可能的乘數字,導致二進位制乘法更為簡單。二進位制數乘法的法則為:
0×0=0
0×1=1×0=0
1×1=1
由低位到高位,用乘數的每一位去乘被乘數,若乘數的某一位為1,則該次部分積為被乘數;若乘數的某一位為0,則該次部分積為0。某次部分積的最低位必須和本位乘數對齊,所有部分積相加的結果則為相乘得到的乘積。
二進位制數除法與十進位制數除法很類似。可先從被除數的最高位開始,將被除數(或中間餘數)與除數相比較,若被除數(或中間餘數)大於除數,則用被除數(或中間餘數)減去除數,商為1,並得相減之後的中間餘數,否則商為0。再將被除數的下一位移下補充到中間餘數的末位,重複以上過程,就可得到所要求的各位商數和最終的餘數。
二進位制數的邏輯運算包括邏輯加法(「或」運算)、邏輯乘法(「與」運算)、邏輯否定(「非」運算)和邏輯「異或」運算。
又稱為邏輯加,可用符號「+」或「∨」來表示。邏輯「或」運算的規則如下:
0+0=0或0∨0=0
0+1=1或0∨1=1
1+0=1或1∨0=1
1+1=1或1∨1=1
可見,兩個相「或」的邏輯變數中,只要有乙個為1,「或」運算的結果就為1。僅當兩個變數都為0時,或運算的結果才為0。計算時,要特別注意和算術運算的加法加以區別。
又稱為邏輯乘,常用符號「×」或「· 」或「∧」表示。「與」運算遵循如下運算規則:
0×1=0或0·1=0或0∧1=0
1×0=0或1·0=0或1∧0=0
1×1=1或1·1=1或1∧1=1
可見,兩個相「與」的邏輯變數中,只要有乙個為0,「與」運算的結果就為0。僅當兩個變數都為1時,「與」運算的結果才為1。
又稱為邏輯否定,實際上就是將原邏輯變數的狀態求反,其運算規則如下:
可見,在變數的上方加一橫線表示「非」。邏輯變數為0時,「非」運算的結果為1。邏輯變數為1時,「非」運算的結果為0。
「異或」運算,常用符號「」或「」來表示,其運算規則為:
00=0 或 00=0
01=1 或 01=1
10=1 或 10=1
11=0 或 11=0
可見:兩個相「異或」的邏輯運算變數取值相同時,「異或」的結果為0。取值相異時,「異或」的結果為1
以上僅就邏輯變數只有一位的情況得到了邏輯「與」、「或」、「非」、「異或」運算的運算規則。當邏輯變數為多位時,可在兩個邏輯變數對應位之間按上述規則進行運算。特別注意,所有的邏輯運算都是按位進行的,位與位之間沒有任何聯絡,即不存在算術運算過程中的進製或借位關係。下面舉例說明。
解:
x=0000000011111111
y=0101010101010101
則:z1=0000000001010101=0055h
z2=0101010111111111=55ffh
z3=1111111100000000=ff00h
z4=0101010110101010=55aah
在計算機中要處理的數有無符號數和有符號數。這些數在計算機中是如何表示的呢?
所謂無符號數,通常表示乙個數的絕對值,即數的各位都用來表示數值的大小。乙個位元組(8位)二進位制數只能表示0~255範圍內的數。因此,要表示大於255的數,必須採用多個位元組來表示,它的長度可以為任意倍位元組長,其資料格式如圖1.1所示。
所謂有符號數,即用來表示乙個任意位長的正數或負數。我們知道,在普通數字中,區分正負數是在數的絕對值前面加上符號來表示,即「+」表示正數,「-」表示負數。在計算機中數的符號也數位化了,即用一位二進位制數字來表示符號。一般是,用乙個數的最高位來表示符號位,用「0」表示正號,用「1」表示負號,而其餘位為數值位。其資料格式如圖1.2所示。
帶正、負號的二進位制數稱為數的真值表示。
例如:x=+1010110
y=-0110101
為了運算方便,在計算機裡的有符號數,有三種表示方法,即原碼、反碼和補碼,稱為機器數。
正數的符號位用「0」表示,負數的符號位用「1」表示,其餘數字位表示數值本身,這種表示法稱為原碼。
例如:上例中
[x]原=01010110
[y]原=10110101
對於0,可以認為它是+0,也可以認為它是-0。因此在原碼中,0有下列兩種表示
[+0]原=00000000
[-0]原=10000000
原碼表示數的方法很簡單,只需要在真值的基礎上,將符號位用數碼「0」和「1」表示即可。但採用原碼表示的數在計算機中進行加減運算時很麻煩。如:遇到兩個異號數相加,或兩個同號數相減時,就要用減法運算。為了把減法運算轉變成加法運算,則引入了反碼和補碼。
在原碼表示的基礎上很容易求得乙個數的反碼。正數的反碼與原碼相同,而負數的反碼則是在原碼的基礎上,符號位不變(仍為1),其餘數字按位求反,即0→1,1→0。
例如:上例中
[x]反=01010110
[y]反=11001010
而:[+0]反=00000000
[-0]反=11111111
乙個數的補碼也很容易求得。如果是正數,補碼同原碼也同反碼,如果是負數,則在反碼的基礎上最末位加1。
例如:上例中
[x]補=01010110=[x]反=[x]原
[y]補=11001011
注:補碼中0只有一種表示,無正負之分,即:
[+0]補=[-0]補=00000000
不難證明,補碼具有如下特性:
[[x]補]補=[x]原
用8位二進位制數來表示無符號數及有符號數的原碼、反碼、補碼時的對應關係見表1.5。
由表1.5可知,用8位二進位制數,表示無符號數為0~255;表示原碼為-127~+127;表示反碼為-127~+127;表示補碼為-128~+127。
兩個用補碼表示的帶符號數進行加減運算時,特點是把符號位上表示正負的「1」和「0」也看成數,與數值部分一同進行運算,所得的結果也為補碼形式,即結果的符號位為「0」,表示正數,結果的符號位為「1」表示負數。下面分加、減兩種情況予以討論。
兩個帶符號的數x和y進行相加時,是將兩個數分別轉換為補碼的形式,然後進行補碼加運算,所得的結果為和的補碼形式。即:
[x+y]補=[x]補+[y]補
解:...
由例1.2可知:當帶符號的數採用補碼形式進行相加時,可把符號位也當作普通數字一樣與數值部分一起進行加法運算,若符號位上產生進製時,則自動丟掉,所得的結果為兩數之和的補碼形式。如果想得到運算後原碼的結果,可對運算結果再求一次補碼即可。
x-y=x+(-y)
則 [x-y]補=[x+(-y)]補=[x]補+[-y]補
可見:求[x-y]補,可以用[x]補和[-y]補相加來實現。這裡關鍵在於求[-y]補。如果已知[y]補,那麼對[y]補的每一位(包括符號位)都按位求反,然後再在末位加1,結果即為[-y]補。(證明從略)。一般稱[-y]補為對[y]補的「變補」,即[[y]補]變補=[-y]補;已知[y]補求[-y]補的過程叫變補。
這樣一來,求兩個帶符號的二進位制數之差,可以用「減數(補碼)變補與被減數(補碼)相加」來實現。這是補碼表示法的主要優點之一。
解:① x=96,y=19 則[x]補=01100000
[y]補=00010011
[-y]補=11101101故 [x-y]補=[x-y]原=01001101=+77
② x=-56,y=-17, 則
[x]補=11001000
[y]補=11101111
[-y]補=00010001
則 [x-y]補=11011001
故 [x-y]原 =[[x-y]補]補=10100111=-39
綜上所述,對於補碼的加、減運算可用下邊一般公式表示:
[x±y]補=[x]補+[±y]補 (都小於2n+1)
當兩個有符號數進行補碼運算時,若運算結果的絕對值超出運算裝置容量時,數值部分就會發生溢位,佔據符號位的位置,導致錯誤的結果。這種現象通常稱為補碼溢位,簡稱溢位。這和正常運算時符號位的進製自動丟失在性質上是不同的。下面舉例說明。例如:某運算裝置共有五位,除最高位表示符號位外,還有四位用來表示數值。先看下面兩組運算。
① 計算13+7=?
② 計算(-4)+(-4)=?
為了保證運算結果的正確性,計算機必須能夠判別出是正常進製還是發生了溢位錯誤。
微機中常用的溢位判別稱為雙高位判別法,並常用「異或」電路來實現溢位判別。
在計算機裡,所有用到的數字、字母、符號、指令等都必須用特定的二進位製碼來表示,這就是二進位制編碼。
例如:(208)10=(0010 0000 1000)8421 bcd
(1001 0001 0111 0101)8421 bcd=(9175)10
例如:數字0的ascii碼為0110000b 或 30h
數字9的ascii碼為0111001b 或 39h
字母a的ascii碼為1000001b 或 41h
計算機基礎知識 計算機基礎知識彙總
計算機專業的那六大件 組成原理,作業系統,資料庫,編譯原理,計算機網路,資料結構,其次還得加上分布式的基礎知識,因為現在的系統都變成分布式的了。如果你是做應用層開發的,那幾門課程中的有些內容和日常工作關聯度不大,我挑那些最重要的來說一說,也算是乙個最小集合吧!1,計算機組成原理 如果你不是做作業系統...
計算機基礎知識 關於計算機的基礎知識
一 計算機發展 世界計算機 1 第一台計算機 eniac,1946年,美國研製的世界上第一台計算機,開闢了計算機技術的新紀元。2 計算機之父 馮 諾依曼參與eniac研究,提出計算機的二進位制 五大組成部分 程式控制。3 計算機發展階段 第一代電子管計算機 1946 1958年。第二代電晶體計算機 ...
計算機基礎知識
計算機5大組成單元 輸入單元 輸出單元 cpu內部的控制單元 算術邏輯單元 記憶體。單有cpu是無法運作計算機的,所以計算機還需要其他的介面裝置才能夠實際執行。很顯然,主機板是必不可少的,因為主機板負責把所有的裝置連線起來,讓所有的裝置能夠進行協調通訊。而主機板上面最重要的元件就是主板晶元組了!這個...