0 | 0 = 0 1 | 1 = 1 0 | 1 = 1 1 | 0 = 1
0 ^ 0 = 0 1 ^ 1 = 0 0 ^ 1 = 1 1 ^ 0 = 1
0 & 0 = 0 1 & 1 = 1 0 & 1 = 0 1 & 0 = 0
0 + 0 =00 1 + 1 =10 0 + 1 =01 1 + 0 =01
結論:
1位二進制運算的低位就是異或運算的結果,進位就是與運算的結果。
而如果加法過程中不會出現進位的話,就只有兩種情況:
1 + 0 = 1 0 + 1 = 1
可以看到,異或肯定沒問題。
0 ^ 1 = 1 1 ^ 0 = 1
在這種特殊的情況下,或運算的規律也恰好滿足。
0 | 1 = 1 1 | 0 = 1
拿PHP語言爲例:
1|2=3 1+2=3 1^2=3
2|4=6 2+4=6 2^4=6
4|8=12 4+8=12 4^8=12
如果仔細看下這三個例子,就會發現它們的共同點,那就是每一位的加法都不會產生進位:
如果都是2的N次方的話,可以理解爲 按位或與加法一樣 也就是“+”與“|”通用。
比如 這種情況(2 ^ x+2 ^ y 且 x,y不相等)恰好不出現進位,所以纔可以通過或運算得到加法運算的結果。