算術運算 (Arithmetic Operation)
C / C++ 中的運算就跟數學差不多
+ 加法
– 減法
* 乘法
/ 除法 (這裡的除法是無條件捨去)
% 模運算 (取餘數)
Examples:
- 5 % 2 = 1
- 5 /2 = 2
- 6 / 4 = 1
- 6 % 4 = 2
提醒:
- 想要計算無條件進位的話可以利用公式 (b + a – 1) / a
邏輯運算 (Logical Operation)
== 條件兩邊相等
<=, < 小於等於或小於
>=, > 大於等於或大於
! NOT 不是
|| OR 其中一個條件滿足即可
&& AND 要滿足所有條件
Examples:
- if(a == 1 || a == 2) -> 只要 a 是 1 或是 2 其中一個就會是 true
- if(a >= 3 && a <= 5) -> a 一定要同時滿足 >= 3 以及 <= 5 才會是 true
- if(!(a >= 3)) -> a 不能 >= 3 才會是 true
位元運算 (Bitwise Operation)
這些運算對初學者就會比較陌生一點了
位元運算是數字用二進位表示後對每個bit (每個0 or 1) 的操作
| OR 只要有其中一個是 1 就是 1
& AND 全部都是 1 才是 1
^ XOR 一個是 0 一個是 1 才會是 1
>> 右移 將一個數字的bit全部往右移動一個 (最右邊的會直接被捨棄)
<< 左移 將一個數字的bit全部往左移動一個 (最右邊的會直接被捨棄)
提醒:
- | 和 & 是用來對位元進行操作,而 || 和 && 則是用來判斷邏輯運算,兩者不可以混淆!
- 而這三種運算都是有結合律的,在判斷 XOR 的時候可以利用結合律的性質來判斷
- 在實務上就是把一個數字右移一次就是無條件捨去 / 2
- 在實務上把一個數字左移一次就是 * 2
以下是剛剛提到的一些位元運算的 truth table
a | b | a|b | a&b | a^b | ~a |
0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |