2023年計算機二級C語言考點解析 運算

2022-04-07 05:54:12 字數 3226 閱讀 7480

15.1 位運算的含義及應用  1.位的概念

大多數計算機系統的記憶體儲器是由眾多的儲存單元構成的。在微機中,每個儲存單元是1個位元組,它由8位二進位制數構成,可以表示28=256種資訊,各位的編號從0~7,最左邊的位(第7位)是最高位,最右邊的位(第0位)是最低位。由於二進位制本身的特點,各位上的數字不是1,就是0。

本章中的位就是指上述提到的二進位制位,本章中的位運算就是指對這些二進位制的位進行邏輯運算、移位運算等操作。

2.數的編碼

數在計算機中是以二進位制表示的,但是它並不是簡單地以它本身的數值的二進位制形式來直接表示,而要進行一定的編碼,以方便計算機進行處理。常用的編碼有原碼、反碼、補碼三種。

3.真值與原碼

我們將乙個十進位制數的二進位制表示稱為這個十進位制數的真值,它代表了這個十進位制數本身的數值。下表列出了一些數的真值。 

真值舉例

數 二進位制表示 真值(16位) 

0  1 

7 01 

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變為0,原碼的0變為1)。

5.補碼

(1)為什麼要引入補碼

補碼具有許多獨特的優點:首先它可以變減法運算為加法運算,使得計算時步驟統一,速度提高;其次,在這種系統下的「0」只有惟一的一種表示方法,這就是現代的計算機系統中大多採用補碼的原因。

(2)補碼的規定

①正數的原碼、補碼、反碼均相同;

②計算負數的補碼時,先置符號位為1,再對剩餘原碼的位數逐位取反,最後對整個數加1。

在微機上以8位二進位制數為一位元組的儲存單元中採用補碼系統,它可以存放的最小整數為-128,最大整數為+127。若採用兩個位元組來表示乙個整數,則可表示的最小整數為-32768,最大整數為+32767。 

15.2 簡單的位運算

c語言提供了位(bit)運算的功能,這使它像組合語言一樣用來編寫系統程式。位運算子共有六種;

位運算子

位運算子 含義 

& 位與 

︳ 位或 

∧ 位異或 

~ 位取反 

<

>> 位右移 

本節介紹前四種運算,即位的邏輯運算。

1.按位與運算

①概念「按位與」運算子「&」是雙目運算子,其功能是將參與運算兩數的各對應二進位相與。只能對應的兩個二進位均為1時,結果位才為1,否則為0。

②「按位與」與運算的特殊用途

ⅰ.清零

如果想將乙個儲存單元清零,即使其全部二進位為0,可按這樣的方法計算:

找乙個數,它的補碼形式中各位的值符合如下條件:原來的數中為1的位,新數中相應位為0(注意,並不要求原數為0的位上,新數相應位為1,新數相應位可以是0或1);對二者進行&運算。

ⅱ.取乙個數中某些位元組

對於乙個整數a(佔2個位元組),如要想得到其中的低位元組,只需將a與特定的乙個數按位與即可。

③要想將乙個數的某一位保留下來,可將該數與乙個特定的數進行&處理。

2.按位或運算

「按位或」運算子「︳」是雙目運算子,其功能是將參與運算兩數的各對應的二進位相或。只要對應的兩個二進位有乙個為1時,結果位就為1。參與運算的整數均以補碼出現。

3.按位異或運算

①概念「按位異或」運算子「∧」是雙目運算子,其功能是將參與運算兩數的各對應位相異或,當兩對應的二進位相異時,結果為1,否則為0。參與運算整數仍以補碼出現。

②「異或」運算的特殊應用

ⅰ.使特定位翻轉

ⅱ.與0相「異或」,保留原值。

ⅲ.交換兩個值。

4.「取反」運算

「~」是乙個一元運算子,即它的運算量只有乙個,用來對乙個二進位制數按位取反,即將0變1,1變0。比如說,~025就是對八進位制數25(即二進位制數000000000010101)按位求反。

15.3 移位運算

1.移位運算子

移位運算是對運算元以二進位制位為單位進行左移或右移。

移位操作

運算子 名 稱 例 子 運算功能 

>> 右移位 b>>3 b右移3位 

<

2.左移運算

左移運算子「<

a<<4

就把a的各二進位向左移動4位。如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。

3.右移運算

右移運算子「>>」是雙目運算子,其功能是把「>>」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。例如:

a=15,a>>2

表示把000001111右移為00000011(十進位制3)。應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0;而為負數時,符號位為1,最高位是補0或1取決於編譯系統的規定。turbo c 規定補1。

右移運算相當於將運算物件除2.

15.4 位賦值運算

位賦值運算子。 

位賦值運算子

運算子 名 稱 例 子 等價於 

&= 位與賦值 a&=b a=2&b 

︳= 位或賦值 a|=b a=a|b 

∧= 位異或賦值 a∧=b a=a∧b 

>>= 右移賦值 a>>b a=a>>b 

<<= 左移賦值 a<<=b a=a

位賦值運算的過程為:

(1)先對兩個運算元進行位操作;

(2)然後把結果賦予第乙個運算元,因此第乙個運算元必須是變數。

位賦值運算與算術賦值運算相似,它們都統稱復合賦值運算。

2023年計算機二級C語言考點解析 檔案

16.1 檔案型別指標 file型別指標 c語言中的檔案分緩衝型檔案和非緩衝型檔案兩種,此處只討論緩衝型檔案。對於緩衝型檔案,每個被使用的檔案都在記憶體中開闢乙個區,用來存放檔案的有關資訊 如檔案名字 檔案狀態及檔案當前位置等 這些資訊儲存在有關結構體型別的變數中。該結構體型別由系統定義,取名為fi...

2023年計算機二級C語言考點解析 陣列

9.1 一維陣列的定義 初始化和引用 1.一維陣列的定義方式為 型別說明符 陣列名 常量表示式 1 陣列名的命名方法與變數名相同,遵循識別符號命名規則 2 陣列是用方括號括起來的常量表示式,不能用圓括號 3 常量表示式表示陣列元素的個數,即陣列的長度,陣列的下標從0開始,下標的最大值為 常量表示式 ...

2023年計算機二級C 考點解析 模板

9.1 函式模板 1 函式模板的概念 定義與應用 template 模板形參表宣告 函式宣告 其中的 模板形參表宣告 是由乙個或多個 模板形參 組成 如果是多個,需要用逗號隔開 每個 模板形參 具有下面幾種形式 1 typename 引數名 2 class 引數名 3 型別修飾 引數名 這裡的 引數...