按位或與加法的區別

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不相等)恰好不出現進位,所以纔可以通過或運算得到加法運算的結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章