Einsen und Nullen
Jap, wir fangen ganz von vorn an.
Die meisten Computer-Produkte heutzutage sind Digitaltechnik. Digital bedeutet in diesem Fall, dass alle Signale in unserem Gerät zwei Zustände haben können: an oder aus, 1 oder 0, high oder low. Letzteres kommt dabei aus der Elektrotechnik und bezieht sich auf die Spannung. Denn auch das Spannungssignal kann bei unserer Digitaltechnik nur zwei Werte haben.
Wie können denn solche einfachen Signale so komplexe Routinen bilden?
Der eben gelesene Abschnitt ist in der modernen Technik natürlich stark vereinfacht. Für die grundlegende Vorstellung ist es aber komplett ausreichend und wahr genug.
Zahlen
Normalerweise benutzen wir für unsere Zahlen die Ziffern 0-9. Und weil das insgesamt zehn Ziffern ergibt und Wissenschaft sich gerne bei Griechisch und Latein borgt, nennen wir das ganze Dezimalsystem.
Bei unseren Einsen und Nullen können wir natürlich aber nur die Ziffern 0-1 benutzen. Das nennt man dann Binärsystem.
Grundsätzlich bleiben die Rechenregeln gleich:
Wir zählen von 0 bis 9 aufwärts und wenn wir 9 + 1 rechnen wollen, gibt es einen Überlauf.
Wir schreiben dann eine 1 vorn hin und fangen hinten wieder mit der 0 an - eine 10 ergibt sich.
Analog dazu das Binärsystem.
Wir zählen 0, 1 und 1+1 ergibt dann einen Überlauf und wir kommen auf 10.
Wir reden hier erstmal nur von positiven Ganzzahlen. Wie negative Zahlen gehandhabt werden, kommt später. Gleitkommazahlen sind nochmal ein ganz anderes Kaliber.
Wie wir jetzt schon sehen, ist 2 im Dezimalsystem (folgend
Logik
Wenn wir in der Informatik von Logik reden, ist dies deutlich elementarer gemeint, als die im Alltag benutze Logik. Logik ist hier ein stumpfer Teil der Mathematik.
Anfangs soll uns die sogenannte boolsche Logik interessieren. Diese legt Rechenregeln für das Rechnen mit wahr und falsch fest. Klingt komisch, aber sobald wir wahr mit 1 und falsch mit 0 ersetzen, sieht es plötzlich wieder nach Mathe aus.
Wie sehen diese Regeln nun aus? Nutzen wir wieder mal eine Analogie für die Vorstellung. Wir wollen für unser morgiges Frühstück einkaufen.
- “Bring bitte Eier und Milch mit.” - Unsere Aufgabe ist nur erledigt, wenn wir beides mitbringen. Bringen wir nur eins oder keins mit, müssen wir nochmal los einkaufen.
- “Bring bitte Gouda oder Edamer mit.” - Wir können eins von beidem mitbringen oder beides, in jedem Fall ist der Auftrag erfüllt.
- “Wir brauchen noch entweder Vollkornbrot oder Toast.” - Beides wäre zu viel. Nur genau eins von beiden wollen wir haben.
- “Bring nicht schon wieder Süßigkeiten mit!” - Hier ist unsere Aufgabe erfüllt, wenn wir etwas nicht tun.
- “Könntest du noch Orangensaft oder Apfelsaft mitbringen? Nur wenn du willst, Hauptsache nicht beides.” - Der einzige Weg hier den Auftrag nicht zu erfüllen, ist beides mitzubringen.
- “Ich möchte weder Müsli, noch Joghurt auf dem Tisch sehen!” - Keines der beiden Sachen darf eingekauft werden, sonst schlägt unser Einkaufsauftrag fehl.
Klingt dich erstmal nach einer soliden Einkaufsliste. Und ohne es zu wollen, benutzen wir hier boolsche Mathematik.
Schauen wir uns das doch mal am ersten Beispiel an:
| Eier mitgebracht | Milch mitgebracht | Einkauf erfolgreich (Eier und Milch) |
|---|---|---|
| nein/falsch | nein/falsch | nein/falsch |
| nein/falsch | ja/wahr | nein/falsch |
| ja/wahr | nein/falsch | nein/falsch |
| ja/wahr | ja/wahr | ja/wahr |
Was wir hier genutzt haben, ist eine Wahrheitstabelle.
Sie gibt alle Kombinationen unserer Eingangswerte und die zugehörigen Ausgangswerte wieder.
In der Tabelle sehen wir ganz gut, wie die Und-Verknüpfung funktioniert.
Zurück zur Mathematik. Statt unseres konkreten Beispiels, nutzen wir doch etwas akademischeres:
und als Eingangswerte statt immer “und” zu schreiben für ja/wahr für nein/falsch
Wow, sieht direkt viel krasser aus, ist aber noch genau das gleiche wie vorher! Im Englischen heißt die Operation übrigens auch einfach “and”.
Kommen wir doch zu den anderen Beispielen.
Als nächstes steht “Gouda oder Edamer” an.
Ob wir eins oder beides mitbringen führt immer zu einem erfolgreichen Einkauf, nichts mitzubringen nicht.
Für “oder” (engl. “or”) wollen wir das Symbol
Oh übrigens, lustige Sache – die Spalten
Jetzt der Fall “entweder Vollkornbrot oder Toast”, wo nur genau eine Sache mitgebracht werden darf.
Das ganze nennt man auch “exklusives oder” (engl. “exclusive or” → “xor”).
Als Symbol dafür wollen wir
Langsam wird klar, wie dieser ganze Logik-Kram funktioniert, oder? Sieht aus wie Magie, mit genug Erklärung kann das aber jeder.
Für das nächste Beispiel müssen wir aus dem gewohnten Umfeld ausbrechen.
Warum?
Weil wir nur eine Bedingung haben: “nicht Süßigkeiten mitbringen”.
Wenn wir etwas nicht machen, sind wir erfolgreich.
Effektiv drehen wir unsere Bedingung des Mitbringens einfach um.
Dies hat viele Namen, normalerweise wird es im deutschen mit “nicht” oder “invertiert” bezeichnet, im Englischen ist es dann “not” und “inverted”.
Es gibt auch mehrere Varianten zur Kennzeichnung:
Im Folgenden nutzen wir immer die letzte Variante.
Eine Wahrheitstabelle gib es natürlich auch, wenn auch kleiner:
Weiter geht’s mit “Orangensaft oder Apfelsaft, nicht beides”.
Interessant, wir kennen sowohl ein Symbol für “beides” (und) und “nicht”.
Und an diesem Punkt lernen wir die ersten Kombinationen.
Diese hier nennen wir “nicht und” (engl. “not and” → “nand”) und wie schon beschrieben ist es die Kombination der Zeichen
Und als allerletztes betrachten wir das “weder Müsli, noch Joghurt”.
Das ist etwas tricky formuliert, aber auch hier ist es eine Kombination aus nur zwei Symbolen.
Zum Spaß machen wir es doch andersrum, wir stellen zuerst die Wahrheitstabelle auf und schauen dann mal, was es sein könnte.
Wir wissen , dass wir nichts von beidem mitbringen sollen, ist auch nur eine Sache mitgebracht, war der Einkauf nicht ohne Fehler.
Tragen wir das doch mal genau so ein:
| ? | ||
|---|---|---|
Probier doch mal, wie wir die Zeichen von Oben kombinieren können, um auf dasselbe Ergebnis zu kommen.
Bist du auch auf
Genauer gesagt kann man sogar logische Terme ineinander umwandeln, die wichtigste Umformungen hierfür sind die sogenannten De-morgansche Gesetze.
Aber das geht jetzt zu weit. Schweifen lieber kurz ab und danach geht es im nächsten Kapitel darum, wie wir mit Logik rechnen können.
Abschweifung: Wie bekommen wir Logik in Strom?
Wir reden die ganze Zeit über “einfache” Logik, aber man fragt sich nun, wie wir Strom dazu bekommen, dieser Logik zu folgen.
Das ist gar nicht so schwer: Mithilfe von Transistoren.
Okay, vielleicht muss ich doch etwas mehr erzählen.
Ein Transistor ist ein aktives elektrisches Bauelement.
Es gibt verschiedene Arten, aber zu Beginn schauen wir uns einen n-Kanal MOSFET an.
Im Normalfall hat dieser drei nutzbare Konnektoren und macht richtig interessante Sachen in Analogschaltungen, wie Verstärkung von Signalen wie Ton.
Aber analoge Sachen interessieren uns hier nicht.
Und dann wird es plötzlich viel einfacher.
Betrachten wir den folgenden Schaltkreis:
Gehen wir davon aus, dass wir am Eingang
Also das behaupte ich jetzt einfach mal, in Wirklichkeit ist der Knoten gerade in “Schwebe”, also undefiniert.
Sobald wir aber am Gate
Um den Ausgang nicht in Schwebe zu lassen, können wir bei der sogenannten CMOS-Technik (Complementary Metal-Oxide-Semiconductor) noch einen p-Kanal MOSFET hinzufügen.
Dieser funktioniert genau andersrum: Wenn am Gate eine Spannung anliegt, ist der Transistor aus, wenn keine Spannung anliegt, ist er an.
Dadurch ist dann unser Ausgang immer definiert.
Hier nochmal als Schaubild:
Statt je nachdem, ob bei
Was genau die zugehörigen Spannung ist, hängt vom jeweiligen System ab.
Die Spannungen sind so zu wählen, dass sie von den Transistoren sicher erkannt werden können.
Aber gut, jetzt haben wir schon ein Und-Gatter.
Man kann sich nun selbst überlegen, wie die anderen Gatter mit Transistoren aufgebaut werden können.
Dazu noch der Hinweis: Wir können auch Signale in CMOS sehr einfach invertieren.
Einfach den p-Kanal Transistor an High und den n-Kanal Transistor an Low anschließen.