c語言基礎(三)

2021-08-10 21:26:43 字數 1507 閱讀 5965

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。

分別為:

&  按位與       如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0

| 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1

^ 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1

~ 取反 ~是一元運算子,用來對乙個二進位制數按位取反,即將0變1,將1變0

<< 左移 用來將乙個數的各二進位制位全部左移n位,右補0

>> 右移 將乙個數的各二進位制位右移n位,移到右端的低位被捨棄,對於無符號數,高位補0

在下文中會詳細介紹上述運算子

1.位與&

(1)注意:位與符號是乙個&,兩個&&是邏輯與。

(2)真值表:1&0=0 1&1=1 0&0=0 0&1=0

(3)從真值表可以看出:位與操作的特點是,只有1和1位於結果為1,其餘全是0.

(4)位與和邏輯與的區別:位與時兩個運算元是按照二進位制位彼次對應位相與的,邏輯與是兩個運算元作為整體來相與的。(舉例:0xaa&0xf0=0xa0, 0xaa && 0xf0=1)

2.位或
兩個相應的二進位制位中只要有乙個為1,該位的結果值為1。借用邏輯學中或運算的話來說就是,一真為真。

#include

main()

3.位取反~
(1)注意:c語言中位取反是~,c語言中的邏輯取反是!

(2)按位取反是將運算元的二進位制位逐個按位取反(1變成0,0變成1);而邏輯取反是真(在c語言中只要不是0的任何數都是真)變成假(在c語言中只有0表示假)、假變成真。

4.位異或^
(

1)位異或真值表:1^1

=00^0

=01^0

=10^1

=1(2

)位異或的特點:

2個數如果相等結果為

0,不等結果為

1。記憶方法:異或就是相異就或操作起來。

5.位與、位或、位異或的特點總結:
位與:(任何數,其實就是1或者0)與1位與無變化,與0位與變成0

位或:(任何數,其實就是1或者0)與1位或變成1,與0位或無變化

位異或:(任何數,其實就是1或者0)與1位異或會取反,與0位異或無變化

6.左移位<< 與 右移位》
c語言的移位要取決於資料型別。

對於無符號數,左移時右側補0(相當於邏輯移位)

對於無符號數,右移時左側補0(相當於邏輯移位)

對於有符號數,左移時右側補0(叫算術移位,相當於邏輯移位)

對於有符號數,右移時左側補符號位(如果正數就補0,負數就補1,叫算術移位)

C語言基礎三

預處理指令 以 號開頭,可以寫在任何位置,在編譯之前執行 巨集定義檔案包含 條件編譯 一 巨集定義 無引數 有引數 num叫做巨集名,6是用來替換巨集名的字串 define num 10 條件一般需要用到巨集定義 if 條件1 不可以放變數 code1。如果條件1成立,則把code1編譯程序式 el...

C 語言基礎(三)

自定義函式的一般形式 注意 包含的內容可以省略,資料型別說明省略,預設是int型別函式 函式名稱遵循識別符號命名規範 自定義函式盡量放在main函式之前。如果要放在main函式後面的話,需要在main函式之前先宣告自定義函式,宣告格式為 資料型別說明 函式名稱 引數 自定義乙個sayhello 函式...

C語言基礎(三)

指標 不論什麼指標型別,指標的大小總是由機器位數決定,例如32位客戶端指標占用4個位元組 取位址 在定義時表示指標變數,在用時表示取值p p指向的位址 p p指向的位址值 int p p 3 上述會出現段錯誤,修改了未定義的記憶體,指標指向不明 p 與 p p的區別?p 指p指向內容,然後內容 1 ...