Beispiele:
Beispiele:
a | → | ·– |
b | → | –··· |
g | → | ––· |
e | → | · |
0 | 0010 |
1 | 0110 |
2 | 0111 |
3 | 0101 |
4 | 0100 |
5 | 1100 |
6 | 1101 |
7 | 1111 |
8 | 1110 |
9 | 1010 |
dn...d0 = d = |
n
∑ i=0 | di × bi |
Für b=2 wird die Abbildung d → dn...d0 auch Binärcode genannt.
dezimal | binär | oktal | hex |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
570(8) = 101111000(2)
|
2A7(16) = 1010100111(2)
|
Deshalb ist es für die Praxis sehr nützlich, dass es zwei handliche Methoden zur Konvertierung zwischen Binär- und Dezimaldarstellung gibt; bei der Konvertierung von bzw. in Oktal- oder Hex-Zahlen ist es dann meist am effektivsten, das Binärsystem als Zwischendarstellung zu nehmen.
Konvertierung binär → dezimal
Trick: die Faktoren bi werden schrittweise berechnet; es gilt
dn...d0 = |
n
∑ i=0 |
di × bi | = | dn × bn + dn−1 × bn−1 + ... + d1 × b1 + d0 × b0 |
= | (...(dn × b + dn−1) × b + ... + d1) × b + d0 |
Konvertierung dezimal → binär
Trick: das Verfahren umkehren; der Wert wird solange halbiert, bis 0
übrig bleibt. Die jeweiligen Reste ergeben die Binärziffern von rechts
nach links.
Beispiel:
Werte halbieren | Reste | aufreihen |
---|---|---|
376 | ||
0 | Ergebnis: 101111000 | |
188 | ||
0 | ||
94 | ||
0 | ||
47 | ||
1 | ||
23 | ||
1 | ||
11 | ||
1 | ||
5 | ||
1 | ||
2 | ||
0 | ||
1 | ||
1 | ||
0 |
1 | 0 | 1 | 0 | ||||
1 | 1 | 0 | 1 | 1 | |||
Übertrag | 1 | 1 | 0 | 1 | 0 | ||
Ergebnis | 1 | 0 | 0 | 1 | 0 | 1 | |
Rechenschritte | 0+1=01 | ||||||
1+1+0=10
"0 hin, 1 im Sinn" |
|||||||
0+0+1=01 | |||||||
... |
10111 * 10111
10111 0 10111 10111 10111
ü 1 1 1 1 ü 101010
1000010001
Die n-stellige Binärcodierung BCn bildet einen passenden Wertebereich natürlicher Zahlen ab in die Menge der n-stelligen Bitfolgen, wobei zunächst gemäß dem binären Stellenwertsystem codiert wird und dann mit führenden Nullen auf n Stellen aufgefüllt wird.
Beispiel: BC4 (5) = 0101
Wertebereich: Mit n Bits lassen sich 2n verschiedene Codeworte darstellen, also die Zahlenwerte 0, ..., 2n−1 . Die Rechnung mit fester Stellenzahl funktioniert zunächst genauso wie mit unbegrenzter Stellenzahl. Gibt es jedoch einen Übertrag in die Stelle n (die n+1-ste Stelle, da die rechteste Stelle den Index 0 hat), so kann das Ergebnis in den n vorgesehenen Stellen nicht mehr dargestellt werden (es liegt außerhalb des Wertebereichs) und es liegt ein Überlauf vor.1 | 0 | 1 | 0 | |||||||||||
1 | 0 | 1 | 1 | |||||||||||
1
0
| 1
| 0
|
|
| 0
| 1
| 0
| 1
| |
Die Codierung positiver Zahlen soll mit der Codierung im binären
Stellenwertsystem übereinstimmen.
Für den negativen Zahlenbereichs sind die folgenden beiden
Codierungen von Bedeutung.
bn−1...b0
ist die Bitfolge
en−1...e0
, bei der jedes Bit invertiert (d.h. 0 und 1 gegeneinander vertauscht)
wurde, d.h.
ei = 1 − bi
für alle i.
Die n-stellige Einerkomplement-Codierung ECn (Einerkomplementdarstellung) bildet ab:
Wertebereich: Mit n Bits lassen sich 2n verschiedene Codeworte darstellen, allerdings gibt es in der Einerkomplement-Codierung für die Null lästigerweise zwei Darstellungen (alle Bits 0 und alle Bits 1), daher sind 2n−1 Zahlen darstellbar, somit der Zahlenbereich −2n−1+1 ... 2n−1−1.
Beim Addieren in der Einerkomplement-Darstellung wird zunächst das
übliche Additionsschema (stellenweise von rechts nach links) angewandt.
Falls aus der höchsten Stelle ein Übertrag entsteht, muss dieser jedoch
in einer Korrekturaddition an niedrigster Stelle hinzuaddiert
werden.
Beispiel: subtrahiere 0101 − 0011:
0 | 1 | 0 | 1 | |||||||||||||||||||||||||||
1 | 1 | 0 | 0 | |||||||||||||||||||||||||||
1
1
| 0
| 0
|
|
| 0
| 0
| 0
| 1
|
|
|
| +
| 1
|
|
| 0
| 0
| 1
| 0
| |
bn−1...b0
wird gebildet, indem zum Einerkomplement noch 1 addiert wird.
dez. | 2er-K. |
---|---|
7 | 0111 |
6 | 0110 |
5 | 0101 |
4 | 0100 |
3 | 0011 |
2 | 0010 |
1 | 0001 |
0 | 0000 |
−1 | 1111 |
−2 | 1110 |
−3 | 1101 |
−4 | 1100 |
−5 | 1011 |
−6 | 1010 |
−7 | 1001 |
−8 | 1000 |
Nebenbemerkung: Die Korrekturaddition aus der Einerkomplement-Darstellung ist hier gewissermaßen in die Codierung integriert.
Wertebereich: Mit n Bits lassen sich 2n verschiedene Codeworte darstellen, in der Zweierkomplement-Codierung gibt es für die negativen Zahlen ein Codewort mehr – der Wertebereich ist unsymmetrisch, es ist der Zahlenbereich −2n−1 ... 2n−1−1.
Beim Addieren in der Zweierkomplement-Darstellung wird das übliche Additionsschema (stellenweise von rechts nach links) angewandt. Das Vorzeichenbit wird dabei einfach mit addiert. Falls aus der höchsten Stelle ein Übertrag entsteht, wird dieser zunächst ignoriert.
Beispiele: ...
Gleitkommazahlen
In der normierten Darstellung befindet sich vor dem Komma genau eine Ziffer ungleich 0. Eine nicht-normiert dargestellte Zahl lässt sich normieren, indem das Komma zur normierten Darstellung verschoben wird und der Exponent entsprechend angepasst. Wird das Komma um k Stellen nach rechts (links) verschoben, wird dadurch der Wert der Mantisse um den Faktor 10k erhöht (vermindert), so dass zum Ausgleich der Exponent um den Betrag k vermindert (erhöht) werden muss, damit der dargestellte Zahlenwert gleich bleibt:
Multiplikation
Unter Berücksichtigung der Gesetze der Potenzrechnung ist
y × z = vy × vz
× my × mz
× bey + ez
Die Komponenten der Gleitkommadarstellung beider Zahlen können also
jeweils miteinander verknüpft werden und es resultiert passenderweise
wieder eine Zahl in Gleitkommadarstellung. Das Ergebnis kann allerdings
2 Stellen vor dem Komma haben, in welchem Fall es noch normiert werden
muss. Die Schritte sind wie folgt:
1. Vorzeichen kombinieren: vy × vz |
| ||
2. Mantissen multiplizieren: my × mz | |||
3. Exponenten addieren: ey + ez | |||
4. Ergebnis normieren |
Addition
Unter Berücksichtigung der Gesetze der Potenzrechnung ist
y + z = (vy × my + vz × mz)
× bey
nur wenn ey = ez
Andernfalls ist eine Denormierung eines der beiden Summanden
durchzuführen, um die Exponenten einander anzupassen, damit eine
Addition durchgeführt werden kann.
Ist z.B. ey > ez, so verschiebe
das Komma von z um ey − ez Stellen
nach links (bzw. die Stellen von mz um diese Stellenzahl
nach rechts bei feststehendem Komma); der Exponent wird dabei angeglichen
und die Addition kann nach obiger Gleichung ausgeführt werden.
Allgemein sind die Schritte wie folgt:
1. Denormieren |
2. Mantissen unter Einbeziehung der Vorzeichen addieren bzw. subtrahieren |
3. Ergebnis normieren |
Name | Bits Vorzeichen | Bits Exponent | Bits Fraction |
---|---|---|---|
IEEE 32-Bit | 1 | 8 | 23 |
IEEE 64-Bit | 1 | 11 | 52 |
TGI | 1 | 6 | 5 |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 |