Erstellt: 29. Dezember 2012 (zuletzt geändert: 31. Dezember 2024)

Boolsche Algebra

…oder warum %10 UND %10 gleich %10 ist!

Schauen wir uns mal die Boolsche Algebra an und wie man damit Binärzahlen manipulieren kann.

Wozu brauchen wir die Boolsche Algebra überhaupt?

Häufig müssen wir innerhalb eines Bytes ein einzelnes Bit prüfen oder setzen. So werden z. B. beim C64 in einem Register (ein Byte im Arbeitsspeicher) die acht möglichen Sprites an- und abgeschaltet. Möchten wir jetzt das dritte Sprite (intern hat das dazugehörige Bit die Nr. 2, da man bei den Bits innerhalb eines Bytes die Zählung mit 0 beginnt! – diesen Hinweis lest hier hier noch oft … sehr oft sogar 😉 ) anzeigen, könnten wir natürlich direkt eine 4 %00000100 in das Register schreiben. Das Problem ist nur, dass dann alle anderen Sprites abgeschaltet werden, was ja nicht immer gewünscht ist.

Hier kommt nun die Boolsche Algebra ins Spiel.

Beginnen wir mit dem ersten boolschen Operator:

1. AND (UND / Konjunktion)

Wie man sieht, wird ein Bit nur dann 1, wenn beide Bits diesen Wert haben.
Also, wenn Bit-A UND Bit-B 1 sind!

Praxisbeispiel
Möchten wir jetzt z. B. nur das dritte Sprite abschalten, dann können wir den Registerinhalt einfach mit einem AND so verändern, dass nur das Bit-2 (denkt dran, dass die Zählung bei 0 beginnt!) auf Null gesetzt wird und alle anderen unverändert bleiben.

Wie wir oben gelernt haben, wird das Ergebnis bei einem AND nur 1, wenn beide Bits auf 1 stehen. Indem wir nun alle Bits, bis auf das zu löschende (hier Bit-2 | beachtet, dass die Zählung bei 0 beginnt!) auf 1 setzen wird nur Bit-2 gelöscht, der Rest bleibt unverändert.

2. OR (ODER / Disjunktion)

Beim OR wird ein Bit immer dann 1, wenn ein oder beide Bits auf 1 stehen, also wenn Bit-A und/ODER Bit-B 1 sind.

Praxisbeispiel
Möchten wir, wie Eingangs ausgeführt, das dritte Sprite anschalten, so sollten wir dies mit einem OR machen. Wir möchten also das Bit 2 (Beginn der Zählung beachten) auf 1 setzen.

Da beim OR das Ergebnis 1 wird, wenn das eine und/oder das andere Bit 1 ist, reicht es, nur die zu setzenden BITs auf 1 zu stellen und dies per OR mit dem Register zu verknüpfen.

3. EOR häufig auch XOR (exclusive or / ausschließendes ODER)

Beim EOR (ich verwende diese Bezeichnung, da beim C64 der entsprechende Befehl so lautet) wird ein Bit nur dann 1, wenn genau eines der beiden Bits auf 1 steht, also wenn NUR Bit-A ODER NUR Bit-B 1 ist.

Praxisbeispiel
Das EOR findet im Vergleich zu den anderen drei Operanten (zum NOT kommen wir gleich) seltener Anwendung. Nehmen wir mal an, wir möchten das erste und dritte Sprite durch an- / abschalten blinken lassen.

Wie wir sehen, werden Bit-0 und Bit-2 (denkt wieder an die Zählung ab o) bei einem Durchlauf auf 0 und beim nächsten wieder auf 1 gesetzt. Beim EOR wird das Ergebnis nur dann 1, wenn genau eines der beiden Bits den Wert 1 hat. Man könnte dies auch durch eine Kombination aus AND & OR erreichen, aber das würde das Programm nur unnötig aufblähen und verlangsamen.

4. NOT (NICHT / Negation)

Bei einem NOT wird jedes Bit umgekehrt, also aus 0 wird 1 und aus 1 wird 0. NOT wird häufig verwendet, um Masken für weitere Operationen zu bilden.

Praxisbeispiel
Wir möchten die oberen vier Sprites und die unteren abwechselnd blinken lassen.

Beim NOT wird kein zweiter Wert benötigt. Es ist ein sog. Unärer-Operator, im Gegensatz zu AND, OR und EOR, die Binäre-Operatoren sind, da dort immer zwei Werte benötigt werden.

Das soll es erstmal sein.
Ich denke, alles weitere findet sich in der Praxis. Sobald ihr anfangt Register zu verändern, werdet ihr die Boolsche Algebra vermehrt einsetzen und dann wird es auch verständlicher.


Schrott!!Naja...Geht so...Ganz gut...SUPER! (16 Bewertungen | Ø 4,63 von 5 | 92,50%)

Loading...


ZurückWeiter

Ein Gedanke zu „Boolsche Algebra“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Protected by WP Anti Spam