Mittwoch, 13. Februar 2013

Binäroperatoren

Wie man hier sehen kann, gibt es in fast allen Programmiersprachen die sogenannten binären oder bitweisen Operatoren.
Diese sind:
   & - bitweises AND (Und-Verknüpfung)
   | - bitweises OR  (Oder-Verknüpfung)
   ^ - bitweises XOR (exklusives Oder)
   ~ - bitweises NOT (Negation)
Wie diese im einzelnen funktionieren, soll nun anhand von Beispielen verdeutlicht werden.

Die UND-Verknüpfung

Bei der Und-Verknüpfung wird jede Binärstelle des linken Operanden mit der selben Stelle des rechten Operanden verglichen. Dabei ist diese Stelle im Ergebnis genau dann 1, wenn beide Operanden an dieser Stelle ebenfalls eine 1 stehen haben, anderenfalls ist diese Stelle im Ergebnis 0.

Beispiel:
  3 & 1       | in Binär umwandeln
  0011 & 0001 | Da nur an Stelle 0 bei beiden eine 1 steht, ist das Ergebnis 0001
  0001        | in Dezimal also 1
  1           | fertig!

Die ODER-Verknüpfung

Hier werden ebenfalls die gleichen Stellen beider Operanden verglichen. Jedoch ist hier das Ergebnisbit 1, wenn mindestens dieses Stelle bei einem Operanden 1 ist. Sind beide Stellen 0, so ist auch die Stelle im Ergebnis 0.

Beispiel:
  3 | 1       | in Binär umwandeln
  0011 | 0001 | Stelle 0 ist bei beiden 1 und Stelle 1 ist beim ersten Operanden 1
  0011        | in Dezimal also 3
  3           | fertig!

Die XOR-Verknüpfung

Beim exklusiven Oder ist das Ergebnisbit nur 1, wenn eine der beiden Stellen der Operanden 1 ist. Sind beide Stellen 0 oder 1, so ist das Ergebnisbit 0. Dies kann man sich sehr gut durch ein Beispiel aus dem realen Leben vorstellen.
Der Satz: "Hände hoch, oder ich schieße" ist eine typisches exklusives Oder, denn er stellt nur dann eine wahre Aussage (in binär 1) dar, wenn genau eine der beiden Aussagen zutrifft. Sind die Hände oben und man schießt trotzdem oder werden die Hände unten gelassen und man schießt nicht, so ist die ursprüngliche Aussage falsch (in binär 0).

Also:
  3 ^ 1       | in Binär umwandeln
  0011 ^ 0001 | Da an Stelle 1 nur eine 1 steht, ist das Ergebnis 0010
  0010        | in Dezimal also 2
  2           | fertig!

Die Negation

Das bitweise Nicht negiert lediglich jedes Bit. Das heißt, aus 0 wird 1 und aus 1 wird 0.

Beispiel:
  ~3    | in Binär umwandeln
  ~0011 | negieren
   1100 | VORSICHT! Das Ergebnis ist nicht 12, sondern -4
  -4    | Warum das so ist, könnt ihr hier nachlesen

Keine Kommentare:

Kommentar veröffentlichen