011
11.10.2003, 11:06 Uhr
0xdeadbeef
Gott (Operator)
|
Nimm das Modulo-Ding. Das ist erstens einsichtiger und zweitens portabler. Der %-Operator rechnet Modulo, das heißt, dividiert zwei Zahlen ganzzahlig und gibt den Rest zurück. Da eine Zahl gerade ist, wenn bei der Division durch 2 der Rest 0 ist, und ungerade, wenn der Rest 1 bleibt, kannst du also folgendes machen:
| C++: |
if(n % 2 == 0) {/* n ist gerade */} if(n % 2 == 1) { /* n ist ungerade */ }
|
Das andere ist eine bitweise UND-Verknüpfung. In der Aussagenlogik ist
falsch UND falsch = falsch falsch UND wahr = falsch wahr UND falsch = falsch wahr UND wahr = wahr
Bei Computern nimmt man 0 als Wert für falsch und 1 als Wert für wahr, zumindest ist das momentan Konvention. Das bitweise UND nimmt dann zwei Ganzzahlen in ihrer binären Repräsentation und wendet das UND auf jede Stelle an. Zum Beispiel:
| Code: |
1010 (= 10) 1100 (= 12) ---- 1000 (= 10 & 12 = 8)
|
Da ungerade Zahlen in dieser Repräsentation am Ende immer eine 1 stehen haben, kann man auf heutigen binären Computern auch ((n&1) == 0) als Test dafür benutzen, ob n gerade ist. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 11.10.2003 um 11:07 Uhr von 0xdeadbeef editiert. |