C++中位運算符異或 ^、&、|


& :只有2個都為1,那么結果是1,否則為0;例如:1&1=1,1&0=0,0&0=0,0&1=0;

11 & 3 = 3

   00001011 & 00000011 = 00000011 = 3

| :只要有一個是1,那么結果為1,否則為0;例如:1&1=1,1&0=1,0&0=0,0&1=1;

11 | 3 = 11

   00001011 | 00000011 = 00001011 = 11

>> :向右位移,就是把尾數去掉位數,例如:153 >> 2,153的二進制是:10011001,屁股后面去掉 2 位 100110,100110 轉化成十進制就是 38,153 = 10011001,38 =100110,"01" 去掉了。

<< :向左位移,就是把開頭兩位數去掉,尾數加位數00,例如:

107 = 0110 1011 <<2 << 172 = 1010 1100

在計算機中由於是32位的

107 = 0000 0000 0000 0000 0000 0000 0110 1011 <<2 << 428 = 0000 0000 0000 0000 0000 0001 1010 1100

^ :兩個相同的數會變成0,反之是1,例如:1&1=0,1&0=1,0&0=0,0&1=1;

11^3 = 8

   00001011 ^ 00000011 = 00001000 = 8

任何數異或 ^0 得到的值不變:

a^0 = a

任何數異或同一個數兩次得到的值不變:

a^b^b = a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM