c語言運算子詳解

一只特立独行的猪yuu發表於2024-04-21

1,算數運算子

%兩個運算元必須為整數

/

2,移位運算子 (只作用於整數)

整數的二進位制表示有原碼,反碼,補碼,儲存到記憶體的是補碼 ,用的也是補碼進行運算

舉例

10000000000000000000000000000001------原碼

11111111111111111111111111111110 ------反碼

正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反)

11111111111111111111111111111111 ------補碼(正數的補碼是其本身,負數的補碼是其反碼加一)

(1)>>——右移運算子,移動的是二進位制(有除2的效果)

①算術右移

右邊丟棄,左邊補原符號位

②邏輯右移

右邊丟棄,左邊補0

(2)<<——左移運算子(有乘二的效果)

左邊丟棄,右邊補0

這個還挺有趣的,多執行找到規律,不能移動負數位

(3)按位與&

a=2 //00000000000000000000000000000010

b=4 //00000000000000000000000000000100

c=a&b=0//00000000000000000000000000000000

(4)按位或|(同上)

a=3 //000000000000000000000011

b=5 //000000000000000000000101

c=a|b=7//000000000000000000000111

(5)按位異或^

對應二進位制位相同為0,相異為1

練習一下

不建立變數交換兩個整型

①加減法交換(可能會溢位)

②異或法

統計num的補碼中有幾個1

①無法求負數 ②最佳化

3,賦值運算子

省略,見手寫筆記

4,單目運算子

! - & sizeof

相關文章