====== Darstellungen ====== ===== Zahlen ===== ==== Komplementer ==== ^ Dezimal darstellung ^ Binärdarstellung ^ Zweierkomplimentdarstellung ^ Einserkomplimentdarstellung ^ | 128 | **1**000 0000 | - | - | | 127 | 0**111** **1111** | 0**111** **1111** | 0**111** **1111** | | 126 | 0**111** **111**0 | 0**111** **111**0 | 0**111** **111**0 | | 125 | 0**111** **11**0**1** | 0**111** **11**0**1** | 0**111** **11**0**1** | | 124 | 0**111** **11**00 | 0**111** **11**00 | 0**111** **11**00 | | 123 | 0**111** **1**0**11** | 0**111** **1**0**11** | 0**111** **1**0**11** | | ... | ... | ... | ... | | 5 | 0000 0**1**0**1** | 0000 0**1**0**1** | 0000 0**1**0**1** | | 4 | 0000 0**1**00 | 0000 0**1**00 | 0000 0**1**00 | | 3 | 0000 00**11** | 0000 00**11** | 0000 00**11** | | 2 | 0000 00**1**0 | 0000 00**1**0 | 0000 00**1**0 | | 1 | 0000 000**1** | 0000 000**1** | 0000 000**1** | | 0 | 0000 0000 | 0000 0000 | 0000 0000 \\ **1111** **1111** | | -1 | -0000 000**1** | **1111** **1111** | **1111** **111**0 | | -2 | -0000 00**1**0 | **1111** **111**0 | **1111** **11**0**1** | | -3 | -0000 00**11** | **1111** **11**0**1** | **1111** **11**00 | | -4 | -0000 0**1**00 | **1111** **11**00 | **1111** **1**0**11** | | -5 | -0000 0**1**0**1** | **1111** **1**0**11** | **1111** **1**0**1**0 | | ... | ... | ... | ... | | -123 | -0**111** **1**0**11** | **1**000 0**1**0**1** | **1**000 0**1**00 | | -124 | -0**111** **11**00 | **1**000 0**1**00 | **1**000 00**11** | | -125 | -0**111** **11**0**1** | **1**000 00**1**0 | **1**000 00**1**0 | | -126 | -0**111** **111**0 | **1**000 00**1**0 | **1**000 000**1** | | -127 | -0**111** **1111** | **1**000 000**1** | **1**000 0000 | | -128 | -**1**000 0000 | **1**000 0000 | - | ==== Zweierkompliment erstellen ==== > Von //links// bis //ausschließlich// der //rechtersten 1 negieren//. **1 1 1 0 1** //1// 0 0 \\ **0 0 0 1 0** //1// 0 0 \\ ==== Subtraktion ==== Subtraktion auf Addition zurückführen. x - y = x + c(y) 1 - 2 = 1 + -2 -1 - 2 = -1 + -2 1 - -2 = 1 + --2 -1 - -2 = -1 + --2 > Beim Einerkompliment muss noch die abgeschnittene stelle zum Ergebniss dazuaddiert werden, damit der Sprung über die 0 korrigeirt wird. -2 1101 + -2 1101 ============ 1|1010 1010 + 1 ======= 1011 = -4 ==== Komma Zahlen ==== Stellenwerte $2^n \Rightarrow \{\ldots, 32, 8, 4, 2, 1, \frac{1}{2}, \frac{1}{4}, \frac{1}{8}, \ldots\}$ - Natürlichen anteil zuerst ausrechnen - $x_n = x_{n-1} \cdot 2$ - Bit setzen * $x_n \ge 1 \Rightarrow$ //Bit = 1// und $x_1 = x_1 - 1$ * $x_n < 1 \Rightarrow$ //Bit = 0// - $x_n = 0 \Rightarrow $ Ende 0,25 in Dualsystem 0,25 * 2 = 0,5 => 0 0,5 * 2 = 1 => 1 0 0,8 in Dualsystem 0,8 * 2 = 1,6 => 1 0,6 * 2 = 1,2 => 1 0,2 * 2 = 0,4 => 0 0,4 * 2 = 0,8 => 0 0,8 * 2 = 1,6 => 1 0,6 * 2 = 1,2 => 1 0,2 * 2 = 0,4 => 0 0,4 * 2 = 0,8 => 0 ... 0,5 in Dualsystem 0,5 * 2 = 1 => 1 0 ==== Übertrag/Überlauf ==== Übertrag/carry = Weitere Stelle (je nach Darstellung durchaus erlaubt)\\ Überlauf/overflow = Zahl verlässt Wertebreich (böse) Das ist ein Überlauf im Zweierkompliment: 1001 0001 1001 1011 =========== 1|0010 1100 Erkennung: - 8. Bit verdoppeln - Addition durchführen - Fehlerprüfung * 9. = 8. Bit => Alles OK * 9. <> 8. Bit => Overflow ==== Floatingpoint ==== - Dec -> Bin - Normieren (1,....) - Mantisse = 23 Stellen nach dem Komma - Exponent = 127 + Stellen die das Komma nach lenks wanderte \\ oder \\ Exponent = 127 - Stellen die das Komma nach rechts wanderte - Vorzeichen = 1 für Minus \\ oder \\ Vorzeichen = 0 für Plus http://zogg-jm.ch/IEEE_754_Umwandlung_Gleitkomma_zu_32_u_64_Bit.html http://www.exploringbinary.com/binary-converter/ ===== Zeichen ===== Code point = Nummer eines Zeichens ==== Zeichensätze ==== * Code point --> Zeichen ^ Name ^ Größe ^ Bemerkung ^ | ASCII | 7 Bit | | | ISO 8859-1 = Latin-1 | 8-Bit | Westeuropäisch | | (ISO 8859-15 = Latin-9) | 8-Bit | Westeuropäisch; mit € (und franzosen Zeichen, ohne Bruch etc.) | | (Windows-1252) | 8-Bit | Kombiniert ISO 8859-1 und ISO 8859-15 | | Unicode | 21 Bit | | (unwichtig) ==== UTF-8 ==== * Byte Strom --> code point * Selbst syncronisierend * Decodierungsfehler --> Replacement char * Unvollständig (zu wenig follge bytes) * Unbekannter header * Ungültiger code point ^ Muster ^ Bedeutung ^ | **0**xxx xxxx | 1 Byte Zeichen (wie ASCII) | | **10**xx xxxx | Folge Byte | | **110**x xxxx | 2 Byte header | | **1110** xxxx | 3 Byte header | | ... | ... |