meta data for this page
  •  

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

bitweise_operatoren [2022/09/27 22:00] – angelegt juergenhaasbitweise_operatoren [2022/09/27 22:21] (aktuell) juergenhaas
Zeile 37: Zeile 37:
  
  
 +==== Bitweise OR-Verknüpfung ====
 +
 +Auch beim bitweisen ''OR'' werden zwei binäre Zeichenfolgen miteinander verknüpft. Bei Bedarf wird ebenso die Länge durch führende Nullen angepasst.
 +
 +Als Beispiel nehmen wir die gleichen Zahlen wie vorhin, verändern aber die Operation zu ''OR'':
 +
 +<code plain>
 +                              Wahrheitstabelle für OR
 +          1011 1100                    1 | 1
 +      OR  1001 0110                    0 | 1
 +      -------------                    1 | 1
 +          1011 1110                    0 | 0
 +
 +</code>
 +
 +Wie man sieht, steht jetzt an jeder Ergebnisstelle eine ''1'', bei der //entweder// in der ersten //oder// in der zweiten Zahl eine ''1'' stand.
 +
 +
 +==== Bitweise NOT-Verknüpfung ====
 +
 +Beim bitweisen ''NOT'' wird ebenso wie bei dem logischen Operator nur ein Eingabewert benötigt. Wir nehmen deshalb für das Beispiel die erste der beiden oben gezeigten Zahlen:
 +
 +<code plain>
 +                              Wahrheitstabelle für NOT
 +     NOT  1011 1100                   1 | 0
 +     --------------                   0 | 1
 +          0100 0011                                 
 +
 +</code>
 +
 +Bei der bitweisen ''NOT''-Operation wird einfach nur jedes Bit des Ausgangswertes umgekehrt.
 +
 +
 +==== Bitweise XOR-Verknüpfung ====
 +
 +Eine besondere Rolle nimmt die bitweise ''XOR''-Verknüpfung ein. Sie funktioniert ganz ähnlich wie die ''OR''-Verknüpfung. Der Unterschied dabei ist, dass 2 wahre Werte nicht mehr ein wahres Ergebnis liefern. Das Wort **oder** ist also als **exklusives oder** (e**x**clusive **or**) zu verstehen. Nur der eine Teil **oder** der andere dürfen wahr sein aber nicht beide.
 +
 +Wiederholen wir das OR-Beispiel von oben mit XOR:
 +
 +<code plain>
 +                              Wahrheitstabelle für XOR
 +          1011 1100                    1 | 0
 +      OR  1001 0110                    0 | 1
 +      -------------                    1 | 1
 +          0010 1010                    0 | 0
 +
 +</code>
 +
 +Wir sehen, dass im Ergebnis dort wo zwei Einsen oder 2 Nullen aufeinandertreffen eine Null steht und nur dort wo zwei unterschiedliche Ziffern zusammenkommen eine Eins herauskommt.
 +
 +---- 
 +
 +=== Besondere Bedeutung von XOR ===
 +
 +Die XOR-Verknüpfung spielt in der Verschlüsselung eine zentrale Rolle. Dies liegt an der nachfolgend demonstrierten Eigenschaft. Für das Beispiel nehmen wir die Bitfolgen
 +  * A: ''1011 0101 1111 0011''
 +  * B: ''1010 0110 0010 1000''
 +  * C: die XOR-Verknüpfung von beiden.
 +
 +<code plain>
 +
 +         1011 0101 1111 0011      A
 +    XOR  1010 0110 0010 1000      B
 +    ------------------------
 +         0001 0011 1101 1011  --> C
 +         
 +         
 +         
 +         1011 0101 1111 0011      A
 +    XOR  0001 0011 1101 1011      C
 +    ------------------------
 +         1010 0110 0010 1000  --> B
 +         
 +         
 +         
 +         1010 0110 0010 1000      B
 +    XOR  0001 0011 1101 1011      C
 +    ------------------------
 +         1011 0101 1111 0011  --> A
 +         
 +</code>
 +
 +Dieses Beispiel zeigt, dass eine bitweise XOR-Verknüpfung
 +  * von A mit C wieder B ergibt und
 +  * von B mit C wieder A ergibt.
 +
 +Sobald also zwei dieser Zahlen bekannt sind, lässt sich die dritte daraus berechnen. 
 +
 +----
 +
 +**Exkurs zur Verschlüsselung**
 +
 +Betrachtet man A als eine Nachricht, die geheim gehalten werden soll und B als den Schlüssel, mit dem sie vom Absender zu diesem Zweck verschlüsselt wird, dann ist C die verschlüsselte Nachricht, die gefahrlos verschickt werden kann.
 +
 +Besitzt der Empfänger auch den Schlüssel B und erhält die verschlüsselte Nachricht C, dann kann er daraus den Klartext A berechnen.