2013-05-05 148 views

回答

12

,並與1:

0000101001000101 
    0000000000000001 
& 
__________________ 
    0000000000000001 

如果你1,數量爲奇數。如果得到0,則數字是偶數。雖然這個作品,我會使用模運算來代替:

>>> 8888 % 2 
0 
>>> 8881 % 2 
1 

它的工作方式相同,一樣快,看起來更好:

In [65]: %timeit random.randint(1, 1000000) & 1 == 0 
1000000 loops, best of 3: 1.02 us per loop 

In [66]: %timeit random.randint(1, 1000000) % 2 == 0 
1000000 loops, best of 3: 1.03 us per loop 
3

你可以,如果你&數量和1,得到0然後數字是偶數,1表示數字是奇數。

>>> 2 & 1 
0 
>>> 3 & 1 
1 
+0

我以前用過這個方法。謝謝 – Vinceeema 2013-05-05 07:43:13

1

您可以使用&運算符來檢查是否設置了最低位;

a = 77 
is_odd = bool(a & 1) 
print is_odd    # Prints True 

a = 64 
is_odd = bool(a & 1) 
print is_odd    # Prints False 
2

**的Python:最低有效位法**

>>> def is_odd(i): return bool(i & 1) 

>>> def is_even(i): return not is_odd(i) 

>>> [(j, is_odd(j)) for j in range(10)] 
[(0, False), (1, True), (2, False), (3, True), (4, False), (5, True), (6, False), (7,  
True), (8, False), (9, True)] 
>>> [(j, is_even(j)) for j in range(10)] 
[(0, True), (1, False), (2, True), (3, False), (4, True), (5, False), (6, True), (7, 
False), (8, True), (9, False)] 
>>> 

見這是否可以幫助你或沒有。

說明:
測試整數是偶數還是奇數。解決此任務的方法不止一種:如果語言提供它們,請使用偶數和奇數謂詞。檢查最不重要的數字。對於二進制整數,我按位 - 1等於0,如果我是偶數,或等於1,如果我是奇數。除以2。如果我是偶數,餘數等於0。如果我是奇數,餘數等於+1或-1。使用模塊同餘:i≡0(mod 2)如果我是偶數。我≡1(模2)如果我是奇數。

+0

測試一個整數是偶數還是奇數。 解決此任務的方法有多種: 使用偶數和奇數謂詞(如果語言提供它們)。 檢查最不重要的數字。對於二進制整數,我按位 - 1等於0,如果我是偶數,或等於1,如果我是奇數。 將我除以2.餘數等於0如果我是偶數。如果我是奇數,餘數等於+1或-1。 使用模塊同餘: i≡0(mod 2)如果我是偶數。 i≡1(mod 2)iff i is odd。 – 2013-05-05 07:43:11

0
# Modular Congruencies # 

>> def is_even(i): 
    return (i % 2) == 0 

>>> is_even(1) 
False 
>>> is_even(2) 
True 
>>> 
+0

@Vinceeema 更簡單的方法! – 2013-05-05 16:08:48

相關問題