一、算術操作符
算術操作符 | 描述 |
---|---|
+ | 把兩個操作數相加 |
- | 第一個操作數減去第二個操作數 |
* | 把兩個操作數相乘 |
/ | 分子除以分母 |
% | 取模運算符,整除后的余數 |
注意:1.除號的兩端都是整數的時候執行的是整數的除法,兩端只要有一個浮點數,就執行浮點數? ? ? ? ? ? ? ? 的除法;
? ? ? ? ? ?2.%取模兩端必須為整數?。
二、移位操作符
1.左移位操作符<<
規則:左邊拋棄,右邊補0
?由于在計算機中存儲的數為二進制的補碼,正數的原碼、反碼、補碼均一致,負數的補碼等于反碼加一
則7的原碼、補碼、反碼為:00000000000000000000000000000111
經過左移一位之后的結果為:000000000000000000000000000001110
即為十進制數14
若操作數為負數
?-7的原碼為:10000000000000000000000000000111
反碼為:11111111111111111111111111111000
補碼為:11111111111111111111111111111001
左移一位后的結果為:11111111111111111111111111110010
原碼為:10000000000000000000000000001110,即十進制數-14
2.右移操作符>>
右移操作符分為兩種①:算術移位:右邊拋棄,左邊補原值符號位
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ②:邏輯移位:右邊拋棄,左邊補0
一般編譯器均為算術移位
-7的補碼為:11111111111111111111111111111001?
右移一位后的結果為:11111111111111111111111111111100
原碼為:10000000000000000000000000000100,即十進制數-4
7的原碼、補碼、反碼為:00000000000000000000000000000111
右移一位后的結果為:?00000000000000000000000000000011,即十進制數3
?三、位操作符
位操作符主要分為三類:
&:按(二進制)位與
|:按(二進制)位或
^:按(二進制)位異或
注意???:操作數均為整數
原理:通過存儲在計算機中的二進制數進行按位操作,若操作數為正數,則直接輸出其對應的數值;若操作數為負數,則求得其對應的原碼所代表的數值后輸出。
int main()
{int a = 3;//a的補碼 00000000000000000000000000000011int b = -5;//b的原碼 10000000000000000000000000000101//b的反碼 11111111111111111111111111111010//b的補碼 11111111111111111111111111111011int c = a & b;printf("c = %d\n",c);//a和b的補碼按位與結果:00000000000000000000000000000011 即十進制數3int d = a | b;printf("d = %d\n", d);//a和b的補碼按位或結果:11111111111111111111111111111011//反碼為:11111111111111111111111111111010//原碼為:10000000000000000000000000000101 即十進制數 -5int e = a ^ b;printf("e = %d\n", e);//a和b的補碼按位異或結果:11111111111111111111111111111000//反碼為:11111111111111111111111111110111//原碼為:10000000000000000000000000001000 即十進制數 -8return 0;
}
四、賦值操作符
運算符 | 描述 |
---|---|
= | 賦值運算符,把右邊操作數的值賦給左邊操作數 |
+= | 加且賦值運算符,把右邊操作數加上左邊操作數的結果賦值給左邊操作數 |
-= | 減且賦值運算符,把左邊操作數減去右邊操作數的結果賦值給左邊操作數 |
*= | 乘且賦值運算符,把右邊操作數乘以左邊操作數的結果賦值給左邊操作數 |
/= | 除且賦值運算符,把左邊操作數除以右邊操作數的結果賦值給左邊操作數 |
%= | 求模且賦值運算符,求兩個操作數的模賦值給左邊操作數 |
<<= | 左移且賦值運算符 |
>>= | 右移且賦值運算符 |
&= | 按位與且賦值運算符 |
^= | 按位異或且賦值運算符 |
|= | 按位或且賦值運算符 |