Wikipedia · einfach zusammengefasst · Stand
Binärcode
Ein Binärcode ist ein Code, in dem Informationen durch Sequenzen von zwei verschiedenen Symbolen (zum Beispiel 1/0 oder wahr/falsch) dargestellt werden.
Inhalt5 Abschnitte
Grundprinzip und Bedeutung
Ein Binärcode stellt Informationen durch Folgen von zwei verschiedenen Symbolen dar, zum Beispiel 1 und 0 oder wahr und falsch. Die Grundlage ist die Zahl 2. Binärcodes sind besonders wichtig, weil sie die Grundlage für die Verarbeitung digitaler Informationen bilden. Viele Varianten entstanden in der Informationstechnik; im Computer-Sprachgebrauch wird „Binärcode“ teilweise auch als Synonym für Maschinencode, Maschinenprogramm oder Maschinensprache verwendet.
Die kleinste Informationseinheit aus 1/0 beziehungsweise wahr/falsch heißt Bit. Binäre Zustände lassen sich technisch einfach darstellen, etwa durch elektrische Spannung: Spannung liegt an entspricht 1 oder logisch wahr, Spannung liegt nicht an entspricht 0 oder logisch falsch. Durch Boolesche Algebra oder durch die technische Verschaltung mehrerer Werte mit Logikgattern können komplexere Informationen verarbeitet werden. Der jeweilige Code legt genau fest, welche höherwertige Information eine bestimmte Bitfolge bedeutet.
So steht im ASCII-Code die Bitfolge 1000001 für „A“ und 1100001 für „a“. Für Menschen sind die Buchstaben verständlicher als die zugehörigen Bitfolgen. Die binäre Darstellung ist nicht an ein bestimmtes Medium gebunden. Entscheidend ist nur, dass zwischen zwei Zuständen gewechselt und dieser Wechsel wieder gemessen werden kann. Theoretisch könnten Informationen daher sogar mit Rauchzeichen übertragen werden, etwa langes Rauchen als 1 und kurzes Rauchen als 0; wegen der geringen Datenübertragungsrate wäre das jedoch unsinnig.
Technische Anwendung und Verarbeitung
Wie Claude Shannon Ende der 1930er Jahre bewies, können mit Schalterzuständen wie 0 und 1 logische Operationen durchgeführt werden. In der Technik werden solche Zustände durch elektronische oder elektromagnetische Signale abgebildet. Die gespeicherten Informationen können anschließend mit komplexen Algorithmen verarbeitet werden, die auf integrierten Schaltkreisen beruhen, etwa in den Prozessoren von Computern.
Binärcodes dienen nicht nur zur Darstellung von Zahlen, sondern auch zur Codierung von Texten, Sonderzeichen, Maschinenbefehlen, Adressen und weiteren Datentypen. Ein einzelnes Datenobjekt kann deshalb aus mehreren unterschiedlich interpretierten Bitfolgen bestehen. Welche Bedeutung die Bits haben, hängt immer von den Regeln des verwendeten Codes und von der festgelegten Datenstruktur ab.
Zahlen, Zeichen und Codeumwandlung
Mit Binärcodes lassen sich ganze Zahlen darstellen. Der mögliche Wertebereich hängt von der Anzahl der verwendeten Bits ab und reicht allgemein von 0 bis n. Grundlage ist das Dualsystem. Für andere Datentypen gelten eigene Konventionen, zum Beispiel IEEE 754 für Gleitkommazahlen und das Zweierkomplement für negative Werte. Texte und Sonderzeichen werden codiert, indem jedem Zeichen eine festgelegte Bitkombination zugeordnet wird.
Bei der Datenübertragung werden häufig zusätzliche Bits eingesetzt, damit Übertragungsfehler erkannt und unter Umständen korrigiert werden können. Diese Codes besitzen eine höhere Redundanz: Sie verwenden mehr Bits, als für die reine Darstellung der Information notwendig wären.
Für Transport, Verarbeitung und Darstellung können unterschiedliche Codesysteme verwendet werden. Daten werden dann meist automatisch in einen anderen Code konvertiert. Numerische Daten auf Lochkarten konnten beispielsweise beim Lesen von einem 1-aus-n-Code in den EBCDIC-Code umgewandelt werden. Als Dualzahl gespeicherte Betragsfelder können für ein Rechnungsformular oder einen Kontoauszug in einen Zeichencode wie ASCII konvertiert werden. Beim Drucken wandelt der Druckertreiber oder der Drucker die Informationen in einen druckerspezifischen Code um. Für solche Umwandlungen können Zeichensatztabellen, sogenannte Codepages, verwendet werden.
Erkennung und Datenstruktur
Ein Bitmuster kann optisch die Verwendung eines bestimmten Codes vermuten lassen, erlaubt aber meistens keine sichere Identifikation. Gespeicherte Daten enthalten im Allgemeinen keine ausdrückliche Information darüber, nach welchem Code sie gespeichert wurden. Beim Zugriff und bei der Verarbeitung muss das Datenformat daher implizit bekannt sein.
Das gilt etwa für den Maschinencode eines Computerprogramms. Eine lange Bitfolge kann darin ASCII-Texte, Fest- oder Gleitkommazahlen, Adressangaben und Maschinenbefehle enthalten. Die einzelnen Bestandteile besitzen jeweils eigene Längen und Strukturen. Welche Bedeutung sie haben, ergibt sich aus den im Quelltext festgelegten Anweisungen und Deklarationen. Der Übersetzer erzeugt dazu passende Maschinenbefehle für die festgelegten Datentypen und Codes.
Auch Dateien müssen mit passenden Programmen verarbeitet werden, zum Beispiel mit Tabellenkalkulations-, Textverarbeitungs- oder Grafikprogrammen. Dateiendungen können dabei in manchen Betriebssystemen helfen. Ohne das passende Programm oder eine notwendige Konvertierung sind die Daten nicht verarbeitbar. Ein gewöhnlicher Texteditor kann nicht als ASCII codierte Daten beispielsweise als unverständlichen „Datensalat“ anzeigen.
In einem Datensatz können je nach Struktur mehrere Binärcodes vorkommen. Die Datenstruktur legt die Reihenfolge der Felder und deren Formate fest. Im Artikel wird als Beispiel genannt: Satzlänge = Dualcode, 2 Byte; Satzart = ASCII, 2 Byte; Gültig-ab-Datum = Hexcode im Format JJJJMMTT, 4 Bytes; Betrag = Festkommazahl mit 2 Dezimalstellen, 16 Bytes.
Klassifikation und wichtige Codearten
Binärcodes lassen sich nach verschiedenen Kriterien ordnen. Maßgeblich sind unter anderem die Existenzform der Codeelemente, die Art der Verarbeitung, die dargestellte Information, die Anzahl zusammengefasster Bits, eine fixe oder variable Struktur sowie die Verwendung von Prüfbits. Codeelemente können sichtbar sein, etwa bei Rauch- und Lichtzeichen oder QR-Codes, hörbar wie Trommelschläge, fühlbar wie in der Blindenschrift oder mechanisch auswertbar wie Löcher auf Lochkarten. Außerdem gibt es elektrische und elektronische Medien, etwa Computer, Festplatten, leitungsgebundene Datenübertragung und WLAN. Die Verarbeitung kann manuell, mechanisch oder elektronisch erfolgen.
Nach der dargestellten Information unterscheidet man beispielsweise Codes für Festkommazahlen, Gleitkommazahlen und alphanumerische Zeichen. Bei der Anzahl der Bits werden unter anderem BCD mit 4 Bits für die Zahlen 0 bis 9, der Hex-Code mit 4 Bits für die Werte 0 bis F beziehungsweise 0 bis 15, ASCII mit 7 Bits und EBCDIC mit 8 Bits genannt. Die Struktur kann fest sein, wie bei den meisten Zeichencodes, oder variabel, wie bei JPG-Fotos und Maschinencode. Prüfbits können fehlen oder vorhanden sein, zum Beispiel beim Gray-Code.
Der Dualcode ist der älteste und am häufigsten verwendete Binärcode. Er bildet ganze Zahlen im Dualsystem ab und wurde bereits Anfang des 18. Jahrhunderts beschrieben. Mit zehn Bits lassen sich die ganzen Dezimalzahlen von 0 bis 1023 darstellen, also 2^10 − 1. Häufige festgelegte Bitlängen sind 1 Byte mit 8 Bits sowie 2, 4 oder 8 Bytes.
Im BCD-Code werden die Ziffern 0 bis 9 jeweils mit vier Bits codiert; möglich sind dabei die Bitfolgen von 0000 bis 1001. Er heißt auch 8-4-2-1-Code. Der von IBM entwickelte EBCDIC-Code ist eine 8-Bit-Zeichencodierung, die auf dem älteren BCD-Code basiert und im Wesentlichen Groß- und Kleinbuchstaben, Sonderzeichen sowie die Ziffern 0 bis 9 codiert. Er wird fast ausschließlich auf Großrechnern verwendet.
Der ASCII-Code, ausgeschrieben American Standard Code for Information Interchange, codiert Zeichen einschließlich der englischen Sonderzeichen mit sieben Bits. Damit sind 128 verschiedene Zeichen möglich, also 2^7. Bei computerinternen Verarbeitungen mit Byte-Speichereinheiten wird das nicht verwendete Bit in der Regel mit 0 belegt.
Maschinencode ist der von einem Prozessor direkt ausführbare Code. Er wird durch den Befehlssatz eines bestimmten Prozessortyps festgelegt und enthält immer einen Opcode sowie gegebenenfalls weitere Angaben wie Adressen oder Literale. Diese Angaben stehen in einer exakt definierten Struktur, zum Beispiel Opcode 8 Bits, Adressangaben 16 Bytes und Registerangaben 4 Bits.
Der Exzesscode kann auch Zahlen mit Vorzeichen in Binärcode umwandeln, indem hauptsächlich der Wertebereich verschoben wird. Der Stibitz-Code ist ein komplementärer BCD-Code und wird auch Exzess-3-Code genannt; er codiert die Dezimalzahlen 0 bis 9. Auch der Aiken-Code ist ein komplementärer BCD-Code und ordnet jeder Dezimalziffer 4 Bits zu. Er unterscheidet sich vom BCD-Code durch die Gewichtung der einzelnen Bits.
Der 1-aus-n-Code, auch 1-aus-10-Code genannt, stellt eine Dezimalzahl in n Bits dar, von denen immer genau ein Bit den Wert 1 besitzt. Die Quersumme der codierten Zahl ist daher immer 1. Der Code ist nicht sehr effizient, weil mit n Bits theoretisch bis zu 2^n verschiedene Zahlen codiert werden können. Ein Beispiel ist die Lochkarte, bei der für rein numerische Daten jeweils eine der Lochpositionen 0 bis 9 verwendet wurde.
Der Gray-Code ist ein stetiger beziehungsweise einschrittiger Code. Benachbarte Werte unterscheiden sich immer nur in einem Bit. Dadurch führen kleine Ungenauigkeiten beim Auslesen nicht unmittelbar zu Fehlinformationen.