異或的用法

2022-09-18 06:48:13 字數 1054 閱讀 3844

異或的性質

1.異或的本質是 無進製相加->相同為0,不同為1

2.異或的性質 a^a=0, a^0=a 以及交換律,結合率

異或的新用法:

1.不占用額外空間的交換位置ab

2.乙個陣列中乙個數出現奇數次,其他數出現偶數次,通過異或找到該奇數次的數

[偽**]

a[n];

auto eor=0;

for(i from 0 to n)eor=eor^a[i];

因為交換律和結合律,偶數次的數經過異或後結果是0,最終表示式為奇數次的數an^0=an

3.乙個陣列中兩個數出現奇數次,其他數出現偶數次,也可以通過異或找到該奇數次的數(高階)

原理:

篩選數:

如何得到eof`?

[偽**]

a[n];

int eor=0,eor`=0;

for(i from 0 to n)eor=eor^a[i];

int rightone= eor&(~eor+1);//得到乙個篩選數,該數可以篩選出第x位為1的數

for(int cur:a[n])

if(a[n]&rightone!=0)eor`=(eor`)^a[n];//此時第x為1的數被異或進eor`,但偶數次數的相抵消為0,eor`存的是a或者b中第x位為1的那個數

eof=eof^eof`;//a^b^a=b,另乙個數.即eof和eof`分別儲存了兩個次數為1的數

異或 異或相關

感謝 morning glory 贊助 異或異 或 de scri ptio ndes crip tion 給定 l,r l,r,求 i lr j lr i ji l r j l r i jl,r 1 09l,r 1 09 s olut ions olut ion 假設l 1,r 4l 1,r 4,...

異或 的一些用法

異或是位運算,當且僅當兩邊相等時為真 即1 1 0 0 1 1 0 0 1 0 異或有很多有用且快速的用法。交換兩個數 a 10,b 5 經過下面操作 1 a b 2 b a 3 a b 輸出a 5,b 10 判斷二進位制數中1的個數 例如 a 1010,利用a a 1 每次能去掉最右邊那個1,迴圈...

異或運算 有趣的異或運算

異或運算可以看做是沒有進製的加法,按位異或運算,相同為0,不同為1。0 0 0 0 1 1 1 0 1 1 1 0 觀察運算結果我們發現,當與0做異或運算時,另一元值不變 而與1做異或運算時,另一元值值取反。根據以上異或運算的特徵,可以有以下用途,除方便直觀外,運算效能也更加優異。1 變數重置0 假...