2013-05-05 13 views

Odpowiedz

12

I to 1:

0000101001000101 
    0000000000000001 
& 
__________________ 
    0000000000000001 

Jeśli masz 1 liczba jest nieparzysta. Jeśli uzyskasz 0, liczba jest parzysta. O ile to działa, chciałbym użyć operatora modulo zamiast:

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

To działa w ten sam sposób, jest tak samo szybki i wygląda ładniej:

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

Można & liczbę i 1, jeśli uzyskać 0, a następnie liczba jest równa, 1 oznacza, że ​​liczba jest nieparzysta.

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

Używam tej metody wcześniej. Dzięki – Vinceeema

1

Można po prostu użyć operatora &, aby sprawdzić, czy ustawiony jest najniższy bit;

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: najmniej znaczący METODA BIT **

>>> 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)] 
>>> 

Zobacz jeżeli można pomaga czy nie.

Objaśnienie:
Sprawdź, czy liczba całkowita jest parzysta czy nieparzysta. Istnieje więcej niż jeden sposób rozwiązania tego zadania: Użyj predykatów parzystych i nieparzystych, jeśli zapewnia je język. Sprawdź najmniej znaczącą cyfrę. Z liczb całkowitych binarnych i bitowych - i 1 jest równe 0 iff i jest równe, lub równe 1 iff i jest nieparzyste. Podziel i przez 2. Reszta jest równa 0 iff i jest parzysta. Reszta jest równa +1 lub -1, iff i jest nieparzysta. Używaj modularnych kongruencji: i ≡ 0 (mod 2) iff i jest parzysty. i ≡ 1 (mod 2) iff i jest nieparzyste.

+0

Sprawdź, czy liczba całkowita jest parzysta czy nieparzysta. Istnieje więcej niż jeden sposób rozwiązania tego zadania: Użyj predykatów parzystych i nieparzystych, jeśli zapewnia je język. Sprawdź najmniej znaczącą cyfrę. Z liczb całkowitych binarnych i bitowych - i 1 jest równe 0 iff i jest równe, lub równe 1 iff i jest nieparzyste. Podziel i przez 2. Reszta jest równa 0 iff i jest parzysta. Reszta jest równa +1 lub -1, iff i jest nieparzysta. Używaj modularnych kongruencji: i ≡ 0 (mod 2) iff i jest parzysty. i ≡ 1 (mod 2) iff i jest nieparzysta. –

0
# Modular Congruencies # 

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

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

@Vinceeema Łatwiejsza metoda! –