neuerlehrplan:gk:zahlenformate
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| neuerlehrplan:gk:zahlenformate [2026/03/02 19:51] – [Ganze Zahlen - Zweierkomplement] lutz | neuerlehrplan:gk:zahlenformate [2026/03/02 20:01] (aktuell) – [Ganze Zahlen - Zweierkomplement] lutz | ||
|---|---|---|---|
| Zeile 5: | Zeile 5: | ||
| ===== Ganze Zahlen - Zweierkomplement ===== | ===== Ganze Zahlen - Zweierkomplement ===== | ||
| - | Exkurs - Schriftliche Addition von Dualzahlen: | + | **Exkurs - Schriftliche Addition von Dualzahlen:** |
| Das schriftliche Addieren von Dualzahlen unterscheidet sich nicht wesentlich von der Durchführung des Verfahrens bei Dezimalzahlen. Der Unterschied besteht lediglich darin, dass sich bereits bei 2 ein Übertrag ergibt: | Das schriftliche Addieren von Dualzahlen unterscheidet sich nicht wesentlich von der Durchführung des Verfahrens bei Dezimalzahlen. Der Unterschied besteht lediglich darin, dass sich bereits bei 2 ein Übertrag ergibt: | ||
| Zeile 43: | Zeile 43: | ||
| <WRAP center round info 60%> | <WRAP center round info 60%> | ||
| - | 8-Bit-Darstellung einer (maximal 7-Stelligen) ganzen Zahl: | + | **8-Bit-Darstellung einer (maximal 7-Stelligen) ganzen Zahl:** |
| - Eine positive Zahl wird durch führende Nullen auf 8 Bit ausgefüllt. Die führende Null kennzeichnet das Vorzeichen + | - Eine positive Zahl wird durch führende Nullen auf 8 Bit ausgefüllt. Die führende Null kennzeichnet das Vorzeichen + | ||
| Zeile 49: | Zeile 49: | ||
| - Bei einer negativen Zahl werden alle 8 Bits der entsprechenden positiven Zahl negiert (Einerkomplement). Anschließend wird 1 addiert (Zweierkomplement). | - Bei einer negativen Zahl werden alle 8 Bits der entsprechenden positiven Zahl negiert (Einerkomplement). Anschließend wird 1 addiert (Zweierkomplement). | ||
| </ | </ | ||
| + | |||
| + | **Beispiel 3** | ||
| + | |||
| + | Gegeben ist die Zahl $80=(1001000)_2 $. Um die Zahl und ihre entgegengesetzte Zahl bei einer Wortbreite von 8 Bit zu bilden, führen wird die folgenden drei Schritte durch: | ||
| + | |||
| + | 1. Ergänzen der Zahl durch führende Nullen auf 8 Stellen (Darstellung von 80 bei 8-Bit Wortbreite): | ||
| + | 2. Das Einerkomplement bildet man, indem man alle Stellen der Zahl umkehrt, d.h. aus einer 0 wird eine 1 und aus einer 1 wird eine 0: $$\begin{array}{lr} | ||
| + | \text{Zahl: | ||
| + | \text{Einerkomplement: | ||
| + | \end{array}$$ | ||
| + | 3. Zum Einerkomplement addiert man nun noch die Zahl 1 um das Zweierkomplement zu erhalten (Darstellung von -80 bei 8-Bit Wortbreite): | ||
| + | \begin{array}{rlr} | ||
| + | \text{Einerkomplement: | ||
| + | & | ||
| + | \text{Zweierkomplement: | ||
| + | \end{array} | ||
| + | $$ | ||
| + | Wenn man nun zur Ausgangszahl das Zweierkomplement (80 + (-80) = 0) addiert, ergibt sich $2^8=256$, also die erste Zweierpotenz, | ||
| + | $$ | ||
| + | \begin{array}{lr} | ||
| + | & | ||
| + | +& | ||
| + | \hline | ||
| + | & | ||
| + | \end{array} | ||
| + | $$ | ||
| + | |||
| + | Das erste Bit wird abgeschnitten und die 0 bleibt als korrektes Ergebnis übrig. | ||
| + | |||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Die Subtraktion ganzer Zahlen im Computer lässt sich durch Addition der negativen Zahl (des Zweierkomplements) realisieren. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Rationale Zahlen ===== | ||
| + | |||
| + | ==== Binäre Gleitkommazahlen ==== | ||
| + | Der heutige Standard für die Darstellung von Kommazahlen sind **binäre Gleitkommazahlen** nach der Norm **IEEE 754**. Bei einer Wortbreite von 64 ist die Zahl dann wie folgt aufgebaut: | ||
| + | |||
| + | - **1 Bit**: Vorzeichen (0-positiv, 1-negativ) | ||
| + | |||
| + | - **11 Bit**: Exponent der Zweierpotenz (1023 entspricht dem Exponent 0 um auch negative Exponenten darstellen zu können) | ||
| + | |||
| + | - **52 Bit**: Mantisse -> dezimale Dualzahl, die immer mit 1. beginnt und den Wert der Zahl ohne Potenz repräsentiert | ||
| + | |||
| + | **Beispiel 3** | ||
| + | |||
| + | Betrachten wir zum Beispiel den Dezimalbruch 5,5. Um die Zahl als binäre Gleitkommazahl darzustellen, | ||
| + | |||
| + | $5.5 = 4 + 1 + \dfrac{1}{2} =(101.1)_2$ | ||
| + | |||
| + | Dann spalten wir die Zweierpotenz ab, so dass vor dem Komma (Dezimalpunkt) eine 1 steht: | ||
| + | |||
| + | $(101.1)_2 = (1.011)_2 \cdot 2^2$ | ||
| + | |||
| + | Somit ergibt sich: | ||
| + | - Vorzeichen: 0 | ||
| + | - Exponent: $1023 + 2 = 1025 = (10000000001)_2$ (,da 1023 dem Exponent 0 entspricht) | ||
| + | - Mantisse .011 (die 1 wird als gesetzt angenommen) | ||
| + | |||
| + | Damit ergibt sich im Computerspeicher für die Zahl 5,5 das folgende Bitmuster: | ||
| + | |||
| + | < | ||
| + | 0 10000000001 0110000000000000000000000000000000000000000000000000 | ||
| + | </ | ||
| + | |||
| + | 5,5 lässt dich als binäre Gleitkommazahl recht gut darstellen, da $0,5 = \dfrac{1}{2}$ gleich eine Zweierpotenz mit negativen Exponenten ist. Andere Zahlen wie z.B. 0,2 lassen sich nicht exakt darstellen und es kommt zu kleinen Abweichungen. Andererseits ist der Zugriff auf binäre Gleitkommazahlen durch den Prozessor sehr schnell. | ||
| + | |||
| + | Binäre 64 Bit-Gleitkommazahlen kommen in Python beim Datentyp float und bei C/C++/Java beim Datentyp double zum Einsatz. | ||
| + | |||
| + | ==== Dezimale Gleitkommazahlen ==== | ||
| + | |||
| + | Diese kommen zum Einsatz, wenn man exakte Dezimalzahlen benötigt werden. In Python werden sie durch den Datentyp decimal.Decimal, | ||
| + | |||
| + | $\pm d.dddd \cdot 10^e$ | ||
| + | |||
| + | Im Unterschied zu binären Gleitkommazahlen ist dieser Datentyp langsamer und braucht mehr Speicher. | ||
| + | |||
| + | ==== Festkommazahlen ==== | ||
| + | |||
| + | Bei Festkommazahlen wird eine feste Anzahl als Stellen als Vorkommastellen und eine feste Anzahl an Stellen als Nachkommastellen. Das Komma steht immer an derselben Stelle. Bei einer 16 Bit - Festkommazahl repräsentieren die ersten 8 Bit die Zahl vor dem Komma und die hinteren 8 Bit die Stellen nach dem Komma. | ||
| + | |||
| + | Um die Zahl 36,75 als Festkommazahl darzustellen, | ||
| + | |||
| + | $36.75 = 32 + 4 + \dfrac{1}{2} + \dfrac{1}{4}$ | ||
| + | |||
| + | Der ganzzahlige Anteil wird dann durch die ersten 8 Bit dargestellt, | ||
| + | |||
| + | < | ||
| + | 00100100 11000000 | ||
| + | </ | ||
| + | |||
| + | Festkommazahlen sind sehr schnell und exakt und haben wenig Speicherbedarf. Sie sind aber sehr unflexibel und haben einen begrenzten Wertebereich. | ||
| + | |||
neuerlehrplan/gk/zahlenformate.1772477481.txt.gz · Zuletzt geändert: von lutz
