Bit-Level

Operationen auf Bit-Ebene

Das Verständnis für die Funktionen auf Bit-Ebene war in der IT-Urzeit unbedingt notwendig. Alle heutigen Computer arbeiten intern auf dieser Ebene, und je tiefer man sich in deren 'LowLevel' begibt, umso mehr muss man sich mit Binären Zahlen auf BitLevel auseinandersetzen. Heute ist dieses Thema nur für wenige fortgeschrittene EntwicklerInnen wichtig. Allerdings stößt man auch in anderen Bereichen manchmal an die Grenze der Bit-Ebene - Für diesen Fall werden hier einige Themen vorgestellt.
Algorithmen Ausgewählte IT-Rezepte
Live-Demo Bitmuster, Interpretation und Verknüpfung
Bool-Operatoren NOT, AND, OR, XOR (NAND, NOR)
Shift-Operatoren LSL, LSR, ASL, ASR, ROL, ROR, SWAP
2er-Komplement Interne Darstellung von negativen Zahlen
Kalkulation Binärzahlen und -Funktionen in LibreOffice, OpenOffice und Excel
Programmierung BitLevel in Basic (VBA), C++, Javascript, Perl, PHP, ...
Darstellung Binär - Ausgabe, Umwandlung Dezimalzahl - Binär-String
Verwandte Themen Interne Darstellung: 2er-Komplement, Gleitkomma-Zahlen, Zeichencodes

Live-Demonstration  (1 Byte)

VariableEingabe binoctdecneghexchr
a 00 0  0 
b 00 0  0 
Automatische Eingabe:
Zufalls-Bytes oder verschiedene vorprogrammierte  Bit-Muster
Pfeile für Addition / Subtraktion von 1
Manuelle Eingabe in die grün unterlegten Felder:
Dezimalzahlen -128..255 oder Bitmuster (prefix 0b , z.B. 0b1100) oder Octalzahlen (führende 0 , z.B. 017)   oder Hexadezimalzahlen (prefix # oder 0x , z.B. #1F)   oder Zeichen in "" , z.B. "A"
In der Tabelle oben werden die beiden Test-Variablen a und b eingegeben und in verschiedenen Formaten dargestellt.

Das gleiche Byte wird in allen für die heutige Informatik wichtigen Zahlen-Systemen angezeigt: Binär bin oder Octal oct oder Dezimal dec oder Hexadezimal hex
Wenn das führende (höchstwertige) Bit=1, dann kann die gleiche Variable je nach Anwendung auch als negative Zahl neg interpretiert werden. (Details zum → 2er-Komplement)

In einer Text-Umgebung wird die gleiche Variable als → Zeichen chr interpretiert - Unterscheiden sie die Zahl 2 vom Zeichen '2'.

Standard BitLevel-Verknüpfungen (Live-Demo: Bool-Operatoren)

In diesem Kapitel wird die Bit-weise Verknüpfung binärer Daten demonstriert. Dabei werden jene beiden Variablen (a,b) verwendet, die sie selbst in der Live-Demo (oben) eingeben können.
Alternativ können sie mit Klick auf den Würfel auch neue Zufallswerte oder vorprogrammierte BitMuster eingeben.
Die Darstellung entspricht den meist verwendeten 'Wahrheits-Tabellen'. Zusätzlich werden die Daten der 8-Bit Variablen nicht nur in binärer sondern auch in dezimaler Form angegeben.

NOT

Der Operator dient zur Umkehrung aller Bits und wirkt nur auf eine einzige Variable.
In der linken Spalte die Variable a, rechts das Ergebnis.
NOT 
a = 0
0
~a = 0
0

AND

Ein Ergebnis-Bit wird nur dann 1 gesetzt, wenn das betreffende Bit in allen Eingangs-Variablen =1 ist. In der linken Spalte die Variable a, in der oberen Zeile die Variable b, in der Zelle rechts unten das Ergebnis. Der AND-Operator ist gut zum selektiven Löschen von Bits geeignet.
AND b = 0
0
a = 0
0
a & b = 0
0

OR

Ein Ergebnis-Bit wird dann 1 gesetzt, wenn das betreffende Bit mindestens in einer der Eingangs-Variablen =1 ist. Der OR-Operator ist gut zum selektiven Setzen von Bits geeignet.
OR b = 0
0
a = 0
0
a | b = 0
0

XOR

Ein Ergebnis-Bit wird (nur) dann 1 gesetzt, wenn das betreffende Bit in genau einer der Eingangs-Variablen =1 ist. Der XOR-Operator ist gut zum Vergleich von zwei Variablen geeignet.
XOR b = 0
0
a = 0
0
a ^ b = 0
0
Mit den Standard-Operatoren (NOT, AND, OR, XOR) lassen sich alle Verknüpfungs-Operationen auf BitLevel durchführen.

Neue Zufallswerte oder vorprogrammierte BitMuster.
Zusätzlich werden (vor allem in der Elektronik) 2 weitere Operatoren (NAND,NOR) als Kombinationen von NOT-AND bzw. NOT-OR eingesetzt. Man verwendet in der Praxis für die meisten Schaltungen ausschließlich NAND-Gatter.

NAND

Ein Ergebnis-Bit wird nur dann 0 gesetzt, wenn das betreffende Bit in allen Eingangs-Variablen =1 ist. Der NAND-Operator ist gut zum selektiven Löschen von Bits geeignet.
NAND b = 0
0
a = 0
0
~(a & b) = 0
0

NOR

Ein Ergebnis-Bit wird dann 0 gesetzt, wenn das betreffende Bit mindestens in einer der Eingangs-Variablen =1 ist. Der NOR-Operator ist gut zum selektiven Setzen von Bits geeignet.
NOR b = 0
0
a = 0
0
~(a | b) = 0
0

Mehr als 2 Eingangs-Variable

In der Informatik (z.B. Programmiersprachen) werden normalerweise nur 2 Variable bitweise verknüpft.
Ausnahme: NOT wirkt (auch in jedem anderen Bereich, z.B. Elektronik) stets nur auf 1 Variable.
In der Elektronik werden Bausteine (logische Gatter, gates) meist mit mehreren Eingängen verwendet. Jeder Eingang entspricht 1 Bit.
Beispiel: Ein NAND-Gatter mit 4 Eingängen schaltet (nur) dann seinen Ausgang auf 0, wenn jede der 4 Eingangs-Leitungen das Signal 1 führt.