C 學習之路 07運算子2

2021-10-23 17:42:44 字數 1764 閱讀 1495

位運算子

①以二進位制的補碼參與運算(注意:所有的值存在記憶體都是以二進位制的補碼形式)

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 過載為類的友元函式...