# Binärcodierung visualisieren: nichtnegative Zahlen in n Bit

> Binärcodierung mit n Bit interaktiv: Hornerverfahren Schritt für Schritt, Bit-Visualisierung, Wertebereich, Addition mit Übertrag und Überlauf.

Adresse: https://marckimmel.de/informatik/zahlenkodierungen/binaer
English version: https://marckimmel.de/en/informatik/zahlenkodierungen/binaer.md

Speichert nichtnegative ganze Zahlen als Binärzahl in n Bit, vorne mit Nullen aufgefüllt.

Die Binärcodierung c_(2,n) : {0, …, 2^n − 1} → B^n speichert eine nichtnegative ganze Zahl x als Binärzahl in n Bit, gegebenenfalls vorne mit Nullen aufgefüllt. Der darstellbare Bereich reicht von 0 bis 2^n − 1, bei n = 8 also 0 bis 255, bei n = 16 bereits 0 bis 65 535 und bei n = 32 etwa 4,29 Milliarden. Die Codierung berechnet das Hornerverfahren, also wiederholte ganzzahlige Division durch 2; die Reste werden von unten nach oben gelesen und ergeben die Binärziffern, die anschließend mit führenden Nullen auf n Bit aufgefüllt werden. Decodiert wird, indem die Zweier-Potenzen 2^i an den Positionen aufsummiert werden, an denen eine 1 steht: (b_(n-1) … b_0)_(2,n) = ∑ b_i · 2^i. Addition läuft stellenweise von rechts nach links mit Übertrag wie im Dezimalsystem; bei Bit-Überlauf wird modulo 2^n gerechnet, also das höchstwertige Bit verworfen. Eine angenehme Eigenschaft ist die lexikografische Sortierbarkeit: größere Zahlen haben lexikografisch größere Bitmuster, sodass die Hardware Codes ohne Decodierung direkt vergleichen kann. Vorzeichen kennt die Binärcodierung nicht.

In C entspricht die Binärcodierung den unsigned-Datentypen (unsigned char, unsigned int und so weiter). Sie ist sinnvoll, wenn negative Werte ausgeschlossen sind, also bei Array-Indizes, Größen, Bitfeldern, Maschinen-Registern, Pixel-Werten oder generell hardwarenaher Programmierung. Beachte: Arithmetik mit unsigned-Werten rechnet modulo 2^n, ein Überlauf führt nicht zu einem Fehler, sondern zu einem zyklischen Wrap.

## Weiter

- [Zahlenkodierungen](https://marckimmel.de/informatik/zahlenkodierungen.md)
