這裡記錄幾個位運算,防止自己忘記
1.a^b--------無進位相加,跟我們平時加法一樣,隻不過這個不會有進位資訊
比如:6^5---->00000…00000000110
--------------------00000…00000000101
----------------- = 00000…00000000011 也就是3
所有就有:0^a=a ; a^a=0
2.a & ((~a) + 1) --------把一個int類型的數,提取出其二進制中最右側的1來
比如:6------------->00000…00000000110 要把6的二進制中最右側的1提取出來
先将6取反得到~6->11111…1111111111001
在将~6加1---------->11111…1111111111001
±------------------------0000…00000000001
------------------------=11111…1111111111010
然後再跟6做與運算----->11111…1111111111010
------------------------------->00000…00000000110
-------------------------------=000000…00000000010
3.num%a(a是2的次方) 等同于num&(a-1)