C++按位異或運算符的使用介紹
參與運算的兩個值,如果兩個相應(yīng)位相同,則結(jié)果為0,否則為1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
例如:10100001^00010001=10110000
0^0=0,0^1=1 0異或任何數(shù)=任何數(shù)
1^0=1,1^1=0 1異或任何數(shù)-任何數(shù)取反
任何數(shù)異或自己=把自己置0
(1)按位異或可以用來使某些特定的位翻轉(zhuǎn),如對數(shù)10100001的第2位和第3位翻轉(zhuǎn),可以將數(shù)與00000110進行按位異或運算。
10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6
(2)通過按位異或運算,可以實現(xiàn)兩個值的交換,而不必使用臨時變量。例如交換兩個整數(shù)a,b的值,可通過下列語句實現(xiàn):
a=10100001,b=00000110
a=a^b; //a=10100111
b=b^a; //b=10100001
a=a^b; //a=00000110
(3)異或運算符的特點是:數(shù)a兩次異或同一個數(shù)b(a=a^b^b)仍然為原值a.
相關(guān)文章
C語言中isalnum()函數(shù)和isalpha()函數(shù)的對比使用
這篇文章主要介紹了C語言中isalnum()函數(shù)和isalpha()函數(shù)的對比使用,都可以判斷是否為字母但isalnum的判斷還包括數(shù)字,需要的朋友可以參考下2015-08-08如何用c++表驅(qū)動替換if/else和switch/case語句
本文將介紹使用表驅(qū)動法,替換復雜的if/else和switch/case語句,想了解詳細內(nèi)容,請看下文2021-08-08