位運算之異或運算

2021-10-04 19:49:26 字數 922 閱讀 3231

位運算是基於整數的二進位制表示進行的運算。位運算總共只有5種運算:與(&)、或(|)、異或(^)、左移(<<)、右移(>>)。

異或運算

維基百科中對「異或」的解釋:

在邏輯學中,邏輯算符異或(exclusive or)是對兩個運算元的一種邏輯析取型別,符號為 xor 或 eor 或 ⊕(程式語言中常用^)。但與一般的邏輯或不同,異或算符的值為真僅當兩個運算元中恰有乙個的值為真,而另外乙個的值為非真。轉化為命題,就是:「兩者的值不同。」或「有且僅有乙個為真。」

程式設計中異或運算即為:參與運算的兩個值,如果兩個相應bit位相同,則結果為0,否則為1。

0^0 = 0,

1^0 = 1,

0^1 = 1,

1^1 = 0

特點:

(1)0^0=0,0^1=10異或任何數=任何數

(2)1^0=1,1^1=01異或任何數 = 任何數取反

(3) 任何數異或自己=把自己置0

用途:(1)使某些特定的位翻轉

例如對數10100001的第2位和第3位翻轉,則可以將該數與00000110進行按位異或運算。

10100001^00000110 = 10100111
(2) 實現兩個值的交換,而不必使用臨時變數。

例如交換兩個整數a=10100001,b=00000110的值,可通過下列語句實現:

a = a^b;   //a=10100111

b = b^a;   //b=10100001

a = a^b;   //a=00000110

位運算 異或運算

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

異或 位運算

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

位運算 異或

通俗的說異或,即指兩值相異時,取真值,否則為假。以下是其真值表 x y y 0 1 x 001 110那麼如何用與或非實現呢?既然是相異,當然首先想到 x y,看看它的真值表 x y01 0001 10有乙個位子有點不一樣,如果換一下 x 和 y 的位置呢?y x01 0011 00哦,這下很清楚了...