計算機二級C語言位運算考點歸納
第15章 位運算考點歸納
15.1 位運算的含義及應用
1.位的概念
大多數計算機系統(tǒng)的內存儲器是由眾多的存儲單元構成的。在微機中,每個存儲單元是1個字節(jié),它由8位二進制數構成,可以表示28=256種信息,各位的編號從0~7,最左邊的位(第7位)是最高位,最右邊的位(第0位)是最低位。由于二進制本身的特點,各位上的數字不是1,就是0。
本章中的位就是指上述提到的二進制位,本章中的位運算就是指對這些二進制的位進行邏輯運算、移位運算等操作。
2.數的編碼
數在計算機中是以二進制表示的,但是它并不是簡單地以它本身的數值的二進制形式來直接表示,而要進行一定的編碼,以方便計算機進行處理。常用的編碼有原碼、反碼、補碼三種。
3.真值與原碼
我們將一個十進制數的二進制表示稱為這個十進制數的真值,它代表了這個十進制數本身的數值。下表列出了一些數的真值。
真值舉例
數 二進制表示 真值(16位)
0
1
7 0
1
111 0000000000000000
0000000000000001
0000000000000111
15
1111
0000000000001111
255
4095
65535 11111111
111111111111
1111111111111111 0000000011111111
0000111111111111
1111111111111111
用真值表示的數只能是正數,對于負數,要用“一”號標明,例如:
-7的真值為-0000000000000111 -65535的真值為-1111111111111111
這勢必造成用計算機表示數時的不便,故引入了原碼表示法。
在原碼表示法中,最高位代表符號位,用“1”表示負數,“0”表示正數;余下的數位用來表示真值的絕對值。
數字零存在著兩種表示方法:+0與-0。
4.反碼
若采用反碼表示,則對應的原碼應按照以下方法進行轉換:
(1)如果真值為正,則它的反碼與原碼相同;
(2)如果真值為負,則反碼的符號位為1,其余各位就是對原碼取反(即原碼的1變?yōu)?,原碼的0變?yōu)?)。
5.補碼
(1)為什么要引入補碼
補碼具有許多獨特的優(yōu)點:首先它可以變減法運算為加法運算,使得計算時步驟統(tǒng)一,速度提高;其次,在這種系統(tǒng)下的“0”只有惟一的一種表示方法,這就是現代的計算機系統(tǒng)中大多采用補碼的原因。
(2)補碼的規(guī)定
、僬龜档脑a、補碼、反碼均相同;
、谟嬎阖摂档难a碼時,先置符號位為1,再對剩余原碼的位數逐位取反,最后對整個數加1。
在微機上以8位二進制數為一字節(jié)的存儲單元中采用補碼系統(tǒng),它可以存放的最小整數為-128,最大整數為+127。若采用兩個字節(jié)來表示一個整數,則可表示的最小整數為-32768,最大整數為+32767。
15.2 簡單的位運算
C語言提供了位(bit)運算的功能,這使它像匯編語言一樣用來編寫系統(tǒng)程序。位運算符共有六種;
位運算符
位運算符 含義
& 位與
︳ 位或
∧ 位異或
~ 位取反
<< 位左移
>> 位右移