在
C/C++語言里,&代表取地址或者“位與”運算
1、取變量的地址:&變量名,這將獲得該變量的地址,例:int a = 1, &p = a。
2、進行位與運算,格式是:變量1&變量2,進行計算時,將會把類型提升為int。
“位與”運算是“位運算”的一種,
運算法則是在二進制數下,相同位的兩個數字都為1,則為1;若有一個不為1,則為0。&運算通常用於二進制取位操作,例如一個數 & 1的結果就是取二進制的最末位。這可以用來判斷一個整數的奇偶,二進制的最末位為0表示該數為偶數,最末位為1表示該數為奇數。
再舉個例子,6的二進制是110,11的二進制是1011,那么6 & 11(也可以表達為6 and 11)的結果就是二進制的10,即十進制的2。
這里 n&1 就是——判斷n是否為奇數
因為n為奇數時,對應的二進制數最低位一定為1,n&1的結果就是1
n為偶數時,相應的最低位為0,n&1的結果就是0,
這里也可以寫 n&1 ==1 或者寫 n%2 == 1 或者寫 n%2
>>1 等價於 /2
<<1 等價於 *2