There is no commentSelect some text and then click Comment, or simply add a comment to this page from below to start a discussion.
[C++] (邏輯)運算子的妙用
總結
儲存(No Change)
要先歸零才能存
0|A -> A
0^A -> A
取反(Not, binary, 互補數)
!A
1^A
相等(Equal)
A^A = 0
A^B
1
歸零(Reset to zeros)
A&0 = 0
A^A = 0
全設為一(Reset to ones)
A|1 = 1
A^(!A) = 1
判斷奇偶
偶數&1=0
奇數&1=1
XOR ^
Storage Register
Operator
Tamparary Register
Result (Storage Register)
Zeros
XOR
A
A
A
XOR
A
Zeros
Ones
XOR
A
not(A)
A
XOR
not(A)
Ones
儲存: 0 XOR 任意值,可儲存該任意值
取反: 1 XOR 任意值,得到二進值取反 (同 NOT)
歸零: (某值)自己 XOR (某值)自己,結果全零
(一)填滿: 自己 XOR 相反的自己,結果全一
相等為0: 自己 XOR 自己 = 0
不相等>0: 自己 XOR 別人
1
例題:
檢查回文當中的落單碼(或錯誤碼): 令 s = "CBAXABC"
string s = "CBAXABC";
char x = 0; // ascii0 = NULL
for(char c:s){
x = x^c;
}
// 最終 x 會等於 X
// 因為其他字元可以成雙成對相消
// 剩下 Zero XOR X -> X