位運算 異或

2022-01-10 19:47:36 字數 623 閱讀 4745

通俗的說異或,即指兩值相異時,取真值,否則為假。

以下是其真值表

x^y(y) 0

1(x)001

110那麼如何用與或非實現呢?

既然是相異,當然首先想到 x & ~y,看看它的真值表

x & ~y01

0001

10有乙個位子有點不一樣,如果換一下 x 和 y 的位置呢?

y & ~x01

0011

00哦,這下很清楚了兩個表疊加一下,就是異或了。所以 x^y,用與或非表示,是 (x & ~y) & (y & ~x).

a ^ a = 0

a ^ ~a = 1

a ^ b = b ^ a

從上面三個特徵,可以得到很多有趣的東西。

乙個經典的例子是,用異或實現不用額外空間的資料交換:

a = a^b;

b = a^b; // = a^b^b = a^0 = a

a = a^b; // = a^b^a = b^a^a = b^0 = b

只要知道 a^b 和 a, b 中的任乙個數,就能計算出 另乙個。

異或 位運算

powered by ab in 局外人 題意 求兩個陣列每個數之間的異或和。如果要o n 2 o n 2 o n2 遍歷,資料範圍很大,肯定會t tt。那麼就要想個別的辦法。我們可以統計分別 a aa,b bb 陣列每一位 0,1 0,10,1 個 數,分別計算每位的貢獻即可。如何實現?inclu...

位運算 異或運算

今天刷題時遇到乙個題,本以為是暴力 大模擬,結果看完別人的ac 後人都傻了,竟然是位運算。其中用到了異或 這種運算子。先上原題連線 傳送門 題目意思很好理解,有無限多個路燈,編號為1.2.3 剛開始時都是關著的,每次對一盞燈的操作都會改變它的狀態 即開變成關,關變成開 每次操作會給你乙個實數a和乙個...

位運算之異或運算

位運算是基於整數的二進位制表示進行的運算。位運算總共只有5種運算 與 或 異或 左移 右移 異或運算 維基百科中對 異或 的解釋 在邏輯學中,邏輯算符異或 exclusive or 是對兩個運算元的一種邏輯析取型別,符號為 xor 或 eor 或 程式語言中常用 但與一般的邏輯或不同,異或算符的值為...