歡迎加入我的 Discord 群組與我討論程式相關的問題!

算術運算 (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

aba|ba&ba^b~a
000001
101010
011011
111100

Blog at WordPress.com.