天天看點

Python表達式 n&1 與 表達式n%2

我們先看一道題:

假設n為整數,那麼表達式 n&1== n%2 的值為____

n = -10
n & 1 == n % 2
------------------------------------
Out[28]: True


n = -9
n & 1 == n % 2
------------------------------------
Out[30]: True
           

n%2

使用整數取餘,傳回的結果為0或者1

&是按位與運算符, 假如n=4轉換二進制為

0000 1010

,1的二進制為

0000 0001

,傳回的結果也是0或者1

10 = 0000 0100
&   1 = 0000 0001
------------------
        0000 0000

  11 = 0000 1011 (不整除 2)                 28 = 0001 1100 (整除 2)
&  1 = 0000 0001                         &  1 = 0000 0001
----------------                         ----------------
       0000 0001                                0000 0000
           

意思就是把

n

轉換成二進制,然後看

n二進制

的最後一位,如果最後一位為1的話,結果就是1,如果最後一位是0的話,那就是0。 & 相當于AND。

因為2的倍數的二進制最後一位都是0,是以n&1表達式跟n%2結果是一樣的

n&1與n%2都能判斷n是為奇數還是偶數,是以0 == 0 = True,1 == 1 = True