====== 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 |
| ... | ... |