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