C#용 논리 XOR 연산자(^)

3987 단어 csharp
這篇想記錄一下關於 XOR 位元運算子

為什麼想紀錄呢?
有次在刷題時看到一個神奇的解法,非常優雅又快速,反觀自己的解法真的是基本到不行,從來沒想過可以利用 XOR,今天就給宥好個個艭的艭艭!

位元運算子有四種,分別為 &|^~ ,其義如下


運算子
정의
描述


&
그리고(且)
當兩者為 참 時,結果為 참

|
또는(或)
當兩者其一為 참 時,結果為 참

^^
XOR(互斥OR)
當兩者皆為 참 或 거짓 時,結果為 참

~
NOT(비)
反轉位元


上表在使用前會先轉換成位元(即二進位制)再進行運算

那麼 XOR 的特性是什麼呢?
當條件一與條件二成立時,會回傳 false

條件 A
條件 B
결과


1
1
0

1
0
1

0
1
1

0
0
0


不習慣看 0 1 的朋友,可以參考下表


條件 A
條件 B
결과


진실
진실
거짓

진실
거짓
진실

거짓
진실
진실

거짓
거짓
거짓


使用方式

Console.WriteLine(1 ^ 1);    // output: False
Console.WriteLine(1 ^ 0);   // output: True
Console.WriteLine(0 ^ 1);   // output: True
Console.WriteLine(0 ^ 0);  // output: False

Console.WriteLine(true ^ true);    // output: False
Console.WriteLine(true ^ false);   // output: True
Console.WriteLine(false ^ true);   // output: True
Console.WriteLine(false ^ false);  // output: False


了解基本概念後,小試身手一下,假設有兩數分別為 2 和 3,Use XOR 運算子會得到的結果是什麼?

一開始先將十進制的數字轉換成二進制
2 → 010
3 → 011

接著對相同位數進行運算

個位 → 0 ^ 1 = 1
十位 → 1 ^ 1 = 0
百位 → 0 ^ 0 = 0

最後得到 001 也就是十進位的 1,神奇吧!

總結從 XOR 看到的東西
  • A ^ 0 永遠是 A
  • A^A 永遠是 A

  • 所以當一數字 XOR 自己,絕對是 0,當一堆數字進行 XOR 運算,得到的結果會是落單的數字,例如: A ^ B ^ C ^ A ^ B,結果會是落單 C,收!

    참조



    Boolean logical operators (C# reference)


    글 읽어주셔서 감사합니다 🌷 🌻 🌼

    마음에 드셨다면 주저말고 하트 꾸욱 눌러주세요❤️
    또는 내 GitHub ⭐ 팔로우
    또는 커피를 사주세요 ⬇️ 감사합니다.

    좋은 웹페이지 즐겨찾기