C語言異或運算在程式設計中的妙用

2022-04-11 03:03:14 字數 973 閱讀 4068

異或運算子∧也稱xor運算子。它的規則是若參加運算的兩個二進位同號,則結果為0(假);異號則為1(真)。即0∧0=0,0∧1=1,1∧1=0。

性質:

(1).與1異或會翻轉

(2).與0異或保持不變

(3).乙個數異或它本身等於0

(4).每一位的結果只與該位有關。

應用:

(1).使特定位翻轉

假設有01110101,現在想讓第一位,第三位翻轉(最低位為第一位),只要異或00000101,得到01110000.

(2).

交換兩個值,不用臨時變數

假如a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現:

a=a∧b;

b=b∧a;

a=a∧b;

即等效於以下兩步:

① 執行前兩個賦值語句:「a=a∧b;」和「b=b∧a;」相當於b=b∧(a∧b)。而b∧a∧b等於a∧b∧b。b∧b的結果為0,因為同乙個數與本身相∧,結果必為0。因此b的值等於a∧0,即a,其值為3。

② 再執行第三個賦值語句:a=a∧b。由於a的值等於(a∧b),b的值等於(b∧a∧b),因此,相當於a=a∧b∧b∧a∧b,即a的值等於a∧a∧b∧b∧b,等於b。a得到b原來的值。

(3).a^b=c->a^c=b

參考文章:

異或運算在程式設計中的應用

1.只出現一次的數字 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?示例 1 輸入 2,2,1 輸出 1 示例 2 輸入 4,1,2,1,2 輸出 4 題目 2.缺失數字 給...

異或 運算的妙用

現有1,1,2,2,3,3,n,n共2n個數,其中各個數字排列的順序是任意的,是雜亂放的,即沒有排序。現在刪除了其中的乙個數剩下了2n 1個數,求刪除的那個數?可能大多數人的第一想法是 用2n個數的總和 n n 1 減去2n 1個數的總和,不錯,想法是正確的。但是,放在計算機中考慮的話,此方法就不太...

C語言 異或 的妙用

異或 位運算符號,相同的位置0,不同的位置1 例 0101 0001 0100 給定乙個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。說明 你的演算法應該具有線性時間複雜度。你可以不使用額外空間來實現嗎?例 輸入 2 2 1 輸出 1 輸入 2 3 3...