2.4.2. Zahlen (S)#
Im vorherigen Abschnitt haben Sie gesehen, dass eine Bitfolge wie
0101111für die Ziffer 6 stehen kann.Eine Bitfolge bedeutet nicht „von selbst“ etwas, sondern erst durch eine Codierung (ein Regelwerk).
Bei UPC gab es nicht direkt ein Muster. Sie haben in der Tabelle einfach abgelesen, dass 0101111 für die Ziffer 6 steht.
2.4.2.1. Binary-coded decimal#
Der Binary-coded decimal (BCD) ist eine weitere numerische Codierung. Die Zuordnung der Zahlen unterscheidet sich aber von dem, was wir bei UPC gesehen haben. Sehen Sie sich die Zuordnungstabelle der BCD-Codierung näher an. Fällt Ihnen etwas auf?
Zahl |
BCD-Code |
|---|---|
0 |
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
Die Bitmuster für 0–9 ergeben sich nach einem sehr einfachen Schema:
linkes Bit: steht für 8 (\(2^3\))
zweites Bit: steht für 4 (\(2^2\))
drittes Bit: steht für 2 (\(2^1\))
rechtes Bit: steht für 1 (\(2^0\))
Hat das Bit den Wert „1“ wird der zugehörige Wert (8,4,2,1) addiert, bei „0“ wird nichts addiert.
Hier noch einmal als Übersicht dargestellt:
Dezimal |
BCD-Code |
Umrechnung |
|---|---|---|
0 |
|
\(0\cdot 8 + 0\cdot 4 + 0\cdot 2 + 0\cdot 1 = 0\) |
1 |
|
\(0\cdot 8 + 0\cdot 4 + 0\cdot 2 + 1\cdot 1 = 1\) |
2 |
|
\(0\cdot 8 + 0\cdot 4 + 1\cdot 2 + 0\cdot 1 = 2\) |
3 |
|
\(0\cdot 8 + 0\cdot 4 + 1\cdot 2 + 1\cdot 1 = 3\) |
4 |
|
\(0\cdot 8 + 1\cdot 4 + 0\cdot 2 + 0\cdot 1 = 4\) |
5 |
|
\(0\cdot 8 + 1\cdot 4 + 0\cdot 2 + 1\cdot 1 = 5\) |
6 |
|
\(0\cdot 8 + 1\cdot 4 + 1\cdot 2 + 0\cdot 1 = 6\) |
7 |
|
\(0\cdot 8 + 1\cdot 4 + 1\cdot 2 + 1\cdot 1 = 7\) |
8 |
|
\(1\cdot 8 + 0\cdot 4 + 0\cdot 2 + 0\cdot 1 = 8\) |
9 |
|
\(1\cdot 8 + 0\cdot 4 + 0\cdot 2 + 1\cdot 1 = 9\) |
Definition: Nibble und Byte
Ein Nibble sind 4 Bits (z. B.
0111).Ein Byte sind 8 Bits (= 2 Nibbles, z. B.
0111 0101).
Im Vergleich zum UPC ist BCD damit „systematischer“.
Wenn Sie das Muster kennen, brauchen Sie für 0–9 keine Tabelle mehr!
Bei zwei Ziffern, wird einfach jeder Ziffer einzeln umgerechnet.
2.4.2.2. Beispiel: 75 in BCD#
Zerlegen Sie die Zahl in ihre Einzelziffern: \(75 \rightarrow\) „7“ und „5“.
Codieren Sie jede Ziffer als 4 Bits (Schalterwerte 8-4-2-1):
\(7 = 0\cdot 8 + 1\cdot 4 + 1\cdot 2 + 1\cdot 1 \rightarrow\)
0111\(5 = 0\cdot 8 + 1\cdot 4 + 0\cdot 2 + 1\cdot 1 \rightarrow\)
0101
Hängen Sie die Bits aneinander: \(75 \rightarrow\)
0111 0101
Problem
BCD codiert jede Dezimalziffer mit 4 Bits.
Ab der Zahl 10 haben wir zwei Ziffern (1 und 0) und brauchen deshalb 2 Nibbles = 8 Bits (1 Byte).
Das ist ineffizient, denn mit 4 Bits gäbe es bereits \(2^4 = 16\) mögliche Bitmuster, aber für Dezimalziffern werden nur 10 davon genutzt (0–9) – 6 Muster bleiben ungenutzt.
Was wäre also, wenn wir diese ungenutzten Muster einfach zum Weiterzählen verwenden würden?
Dezimal |
BCD-Code |
Alternative??? |
|---|---|---|
0 |
|
|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
2.4.2.3. Binärdarstellung#
Die Binärdarstellung ist ein Stellenwertsystem und nutzt die verfügbaren Bitmuster aus:
Zahl |
Binär (Nibble-Darstellung) |
|---|---|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
32 |
|
64 |
|
128 |
|
256 (= 2**8) |
|
Die Binärdarstellung ist eine Stellenwertdarstellung zur Basis 2: Jedes Bit hat einen Stellenwert (eine Potenz von 2), und der Zahlenwert ergibt sich als Summe aller gesetzten Bits: