位運算子
①以二進位制的補碼參與運算(注意:所有的值存在記憶體都是以二進位制的補碼形式)
int a =-2
;//-2在記憶體中表示為 11111111 111111111111 11111111 1111 1110
補充:
1.原碼:將數值轉化為二進位制的形式,無符號的第一位不表示正負(沒有負數),帶符號的第一位表示正負,0開頭為正數,1開頭為負數。
unsigned
int a=2;
//無符號的整型
int b=2;
//帶符號
2.反碼:正數的反碼是本身,負數的反碼是除了符號位以外,其他全部取反(0變1,1變零)
//原碼10000000 00000000 00000000 00000010
int a =-2
;//-2在反碼表示為 11111111 111111111111 11111111 11111101
3.補碼:正數的補碼是本身,負數的反碼是反碼取反加一。
int a =-2
;//-2的原碼表示為 10000000 00000000 00000000 00000010
//-2在反碼表示為 11111111 11111111 11111111 11111101
//-2的補碼表示為 11111111 11111111 11111111 11111110
左移(<<):
a<<1:a的二進位制整體向左移動乙個單位,右邊補零。
int a =-2
;//-2的原碼表示為 10000000 00000000 00000000 00000010
//a<<1;表示為 10000000 0000000 00000000 00000100 -> 值變為-4
右移(>>):
a>>1:a的二進位制整體向右移動乙個單位,左邊補符號位。
int a =-2
;//-2的原碼表示為 10000000 00000000 00000000 00000010
//a>>1;表示為 110000000 0000000 00000000 00000001
注意:數值:整數預設為int型別,補0;例如:0x12
整型提公升時,無符號的前面補0,帶符號的補符號位,對於無符號的變數,反碼補碼都是本身。
按位與(&):
a&b:a和b的補碼從右往左對應,同1為1,否則為0.
//0101 & 1111 -> 0101
按位或(|):
a|b:a和b的補碼從右往左對應,有1為1,否則為0.
//0101 | 1111 -> 1111
按位異或(^):
a^b:a和b的補碼從右往左對應,相同為0,否則為1.
//0101 ^ 1111 -> 1010
按位非(~):
~a:0變1,1變0.
//0001 ->1110
注意:運算流程:原碼->補碼(參與運算)->補碼(運算結束)->原碼(最終結果) C 學習之路 06運算子1
算術運算子 算術運算度有幾種,分別為 加號 減號 乘號 除號 取餘 使用運算子時需要注意以下幾點 當精度高的數與精度高的數參與運算時結果為高精度的。當unsigned int與int參與運算時,int型別會轉換為unsigned int參與運算。其他整型參與運算時,會自動提公升為int型。例如 sh...
07 基本運算子
本文目錄 回到頂部 c語言一共有34種運算子,包括了常見的加減乘除運算 除開能做加法運算,還能表示正號 5 90 除開能做減法運算,還能表示符號 10 29 注意符號,不是x,而是 1 注意符號,不是 也不是 而是 2 整數除於整數,還是整數。1 2的值是0,這個並不是二分之一 1 什麼是取餘 兩個...
C 基礎 07 運算子過載
顧名思義,比如過載運算子 等,改變這些符號原有的意義。c 提供了operator關鍵字,它和運算子一起使用,表示乙個運算子函式,理解時應將operator 整體上視為乙個函式名。運算子的過載實現有兩種形式 1 過載為類的成員函式 函式返回型別 operator 運算子 形參表 2 過載為類的友元函式...