--- tags: C++, C --- # [C++] (邏輯)運算子的妙用 ## 總結 ### 儲存(No Change) 要先歸零才能存 * 0|A -> A * 0^A -> A ### 取反(Not, binary, 互補數) * !A * 1^A ### 相等(Equal) * A^A = 0 * A^B $\geq$ 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 別人 $\geq$ 1 * 例題: 1. 檢查回文當中的落單碼(或錯誤碼): 令 s = "CBAXABC" ```python= string s = "CBAXABC"; char x = 0; // ascii 0 = NULL for(char c:s){ x = x^c; } // 最終 x 會等於 X // 因為其他字元可以成雙成對相消 // 剩下 Zero XOR X -> X ``` ## AND & * 任意數 AND 0 => 歸零 * ==任意數 AND 1 => 偶數為0,奇數為1== * 偶數 AND 1 => 0 * 奇數 AND 1 => 1 * 自己 AND 自己 => 自己 ## OR | * 任意數 OR 0 => 自己 * 任意數 OR 1 => 填滿1的結果 * 自己 OR 自己 => 自己
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.