In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können
Unter Daten versteht man im Allgemeinen Angaben, (Zahlen-)Werte oder formulierbare Befunde, die durch Messung, Beobachtung u. a. gewonnen wurden. [1] […] Für die Datenverarbeitung und (Wirtschafts-)Informatik werden Daten als Zeichen (oder Symbole) definiert, die Informationen darstellen und die dem Zweck der Verarbeitung dienen. [2] Wikipedia, 2018
[1] Daten. In: Duden (online)
[2] Heinz-Peter Gumm, Manfred Sommer: Einführung in die Informatik. 10. Auflage. Oldenbourg Verlag, ISBN 978-3-486-70641-3, S. 4 f.
Beispiel:
Informationen können falsch sein, Daten nicht!
Quelle: https://xkcd.com/953/
$73_{10}$
Es soll die Zahl $73_{10}$
näher betrachtet werden.
Informelle Zerlegung der Zahl
Ein wenig formeller:
$ n_B={\color{#00b1ac}B}^0 \cdot {\color{#0070C0}{d_0}}+{\color{#00b1ac}B}^1 \cdot {\color{#0070C0}{d_1}} $
$ {\color{#00b1ac}B} = 10 $
$ {\color{#0070C0}{d}} = {\color{#0070C0}{d_0}} = 3, {\color{#0070C0}{d_1}} = 7 $
$ 73 = {\color{#00b1ac} {10} }^0 \cdot {\color{#0070C0}{3}} + {\color{#00b1ac} {10} }^1 \cdot {\color{#0070C0}{7}} $
$ {\color{red}{r}} = 1 $
Zahlensystem | Basis | Wertebereich | Beispiel |
---|---|---|---|
dezimal | 10 | {0,1,2,…,8,9} | $73_{10}$ |
binär | 2 | {0,1} | $1001001_{2}$ |
hexadezimal | 16 | {0,…,9,A,…,F} | $49_{16}$ |
There are 10 types of people in the world:
Those who understand binary and those who don‘t!
Quelle: https://www.schoeller.de/media/2157/ten-for-two-slider.png
Quelle: https://xkcd.com/74/
Aufsummieren der Potenzen:$73_{10} = ???_{2}$
Rückwärts Hornerschema:$73_{10} = ???_{2}$
Binär | Dezimal | Hexadezimal |
---|---|---|
101010 | ||
37 | ||
AC |
Binär | Dezimal | Hexadezimal |
---|---|---|
101010 | 42 | 2A |
100101 | 37 | 25 |
10101100 | 172 | AC |
In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können
Positive ganze Zahlen lassen sich in einem Computer sehr einfach im Binärsystem darstellen, aber …
Wie lassen sich negative ganze Zahlen in einem Computer darstellen?
$: java -jar negativeNumbers.jar
Where to start?
-4
Where to end?
4
1111 1111 1111 1111 1111 1111 1111 1100
1111 1111 1111 1111 1111 1111 1111 1101
1111 1111 1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1111 1111 1111
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0010
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0100
Das 2-Komplement kann wie folgt grafisch dargestellt werden
Dezimal | Ergebnis im 2-Komplement |
---|---|
4-5 | |
5-4 | |
15-8 |
Dezimal | Ergebnis im 2-Komplement |
---|---|
4-5 | 0100 + 1011 = 1111 |
5-4 | 0101 + 1100 = 0001 |
15-8 | 01111 + 11000 = 00111 |
Die Umwandlung besteht aus 3 Schritten:
$73_{10} = 1001001_{2}$
(siehe vorheriges Kapitel)$ 0,4 \cdot 2 = 0,8 \longrightarrow 0 (erstes Bit) $
$ 0,8 \cdot 2 = 1,6 \longrightarrow 1 $
$ 0,6 \cdot 2 = 1,2 \longrightarrow 1 $
$ 0,2 \cdot 2 = 0,4 \longrightarrow 0 $
$ 0,4 \cdot 2 = 0,8 \longrightarrow 0 $
$1001001,\overline{0110}$
$$ x=s \cdot m \cdot 2^e $$ $$ s = (-1) ^{\color{#00b1ac}S} $$ $$ e = {\color{#0070C0}E}-b $$ $$ m = 1,{\color{red}{M}} $$
Umwandlung der Dezimalzahl (hier 73,5) in eine binäre Festkommazahl ohne Vorzeichen $$ 73.5_{10} = 1001001.1_2 $$
Normalisieren und Bestimmen des Exponente
$$ 1001001.1_2 \cdot 2^{0} = 1.0010011_2 \cdot 2^{6} $$
$$ {\color{red}M} = 00100110000000000000000_{2} $$
$$ {\color{#0070C0}E} = 6 + 127 = 110_2 + 1111111_2 = 10000101_2 $$
Vorzeichen-Bit bestimmen $ {\color{#00b1ac}S}=0 $
Gleitkommazahl zusammensetzen (float)
$$ {\color{#00b1ac}0}{\color{#0070C0}{1000010 1}}{\color{red}{0010011 00000000 00000000}} $$
Anmerkung
Exponent E | Mantisse M | Bedeutung |
---|---|---|
$ E = 0 $ |
$ M = 0 $ |
$ \pm 0 $ |
$ E = 0 $ |
$ M \ne 0 $ |
$ \pm 0.M \cdot 2 ^{1-b} $ |
$ 0 < E < 2^{r}-1 $ |
$ M \ne 0, M = 0 $ |
$ \pm 1.M \cdot 2 ^{E-b} $ |
$ E = 2^r -1 $ |
$ M = 0 $ |
$ \pm \infty $ |
$ E = 2^r -1 $ |
$ M \ne 0 $ |
$ NaN $ |
Es seien zwei Gleitkommazahlen a und b gegeben
a = |0|10000001|(1)10010000000000000000000
b = |0|01111111|(1)10110001000100000000000
Die Zahl b ist kleiner und muss daher umgerechnet werden
b = |0|10000001|(0)01101100010001000000000
Addition
a + b = |0|10000001|(1)11111100010001000000000
Datentyp | Größe | Wrapper-Klasse | Wertebereich | Beschreibung |
---|---|---|---|---|
byte |
8 Bit | java.lang.Byte |
−128 … +127 | 2-Komp. |
short |
16 Bit | java.lang.Short |
−32.768 … +32.767 | 2-Komp. |
int |
32 Bit | java.lang.Integer |
−2.147.483.648 … +2.147.483.647 | 2-Komp. |
long |
64 Bit | java.lang.Long |
−9.223.372.036.854.775.808 … +9.223.372.036.854.775.807 |
2-Komp. |
float |
32 Bit | java.lang.Float |
±1,4E−45 … ±3,4E+38 | IEEE 754 |
double |
64 Bit | java.lang.Double |
±4,9E−324 … ±1,7E+308 | IEEE 754 |
Festkommazahl | Gleitkommazahl |
---|---|
01011001.010 |
|
1 10000110 10110010010000000000000 |
Festkommazahl | Gleitkommazahl |
---|---|
01011001.010 |
0 10000101 01100101000000000000000 |
-11011001.001 |
1 10000110 10110010010000000000000 |
Unicode ist ein Zeichensatz mit 32 Bits, der als weltweiter Standard geplant ist
Um die Unicode-Zeichen im Rechner zur Weiterverarbeitung darstellen zu können gibt es die UTF-Codierung
Es gibt mehrere UTF-Standards
UTF-8 ist dazu geeignet, den Speicherplatz eines Zeichens den Anforderungen anzupassen
Handelt es sich bei einem Zeichen um ein ASCII-Zeichen wird ein Byte zur Codierung benötig
0xxx xxx
Handelt es sich um ein anderes Zeichen werden 2 bis 4 Bytes zur Codierung benötigt
Unicode-Bereich | UTF-8-Kodierung | Möglichkeiten | Platz für |
---|---|---|---|
0000 0000 – 0000 007F |
0xxx xxxx |
128 | 7 Bits |
0000 0080 – 0000 07FF |
110x xxxx 10xx xxxx |
2048 | 11 Bits |
0000 0800 – 0000 FFFF |
1110 xxxx 10xx xxxx 10xx xxxx |
65.536 | 16 Bits |
0001 0000 – 0010 FFFF |
1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx |
2.097.152 | 21 Bits |
Es soll der Unicode U+265E (♞) in UTF-8 dargestellt werden:
1110 xxxx | 10xx xxxx | 10xx xxxx
0010 0110 0101 1110
1110
0010
| 10
01 1001
| 10
01 1110
Zeichen / Dezimalwert | Unicode | UTF-8 |
---|---|---|
A / 65 | ||
ä / 257 | ||
Ў / 1038 |
Zeichen / Dezimalwert | Unicode | UTF-8 |
---|---|---|
A / 65 | U+0041 | 41 |
ä / 257 | U+0101 | C4 81 |
Ў / 1038 | U+040E | D0 8E |
In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können
Ausführbar | Daten | |
---|---|---|
Binär | Programme | Speicherabbilder von Objekten |
Textbasiert | Skripte | yaml,xml,csv … |
Dateien die Maschienencode enthalten werden Programme genannt.
Die Kennzeichnung von Dateien ist OS abhängig
Linux, MacOS
Windows
.exe
habenDateien die Quellcode für einen Interpreter enthalten
Linux, MacOS
!#
Windows
.cmd
,.bat
-> Eingabeauforderung, .py
-> PythonDaten werden Byteweise in eine Datei geschrieben
.dat
oder .bin
DateienStunde,Montag,Dienstag,Mittwoch,Donnerstag,Freitag
1,Mathematik,Deutsch,Englisch,Mathematik,Kunst
2,Sport,Französisch,Geschichte,Sport,Geschichte
3,Sport,"Religion (ev, kath)",Kunst,,Kunst
Vorteile
Nachteile
JSON = Java Script Object Notation
{
"id": {
"$oid": "5968dd23fc13ae04d9000001"
},
"product_name": "PowerBook 5 Ultra",
"supplier": ["Von-Neumann Inc.","Moore Corp."],
"quantity": 71,
"unit_cost": "$1123.47"
}
Vorteile:
Nachteile
XML = Extensible Markup Language
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Vorteile:
Nachteile
YAML - YAML Ain’t Markup Language
invoice: 34843
date : 2001-01-23
bill-to: &id001
given : Chris
family : Dumars
address:
city : Royal Oak
postal : 48046
ship-to: *id001
product:
- sku : BL394D
description : Basketball
- sku : BL4438H
description : Super Hoop
total: 4443.52
Quelle: http://yaml.org/start.html
Vorteile:
Nachteile
In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können
Matse ausbildung
=Matse ausbildung
Es kann technische Randbedingungen geben, die die Verwendung spezieller Codes nötig machen
Technische Realisierung einer CD
Technische Randbedingungen
Codes zur Speicheroptimierung komprimieren Daten
Wenn Codes unterschiedliche Länge haben, müssen diese präfixfrei sein
A | B | C | D | E |
---|---|---|---|---|
00 | 11 | 01 | 100 | 101 |
Der Huffman-Code ist eine Variante eines präfixfreien Codes
Codieren Sie das folgende Wort nach dem Huffmann-Code:
MISSISSIPPI
Manche Übertragungsmedien sind fehleranfällig
Fehler müssen erkannt und im Optimalfall korrigiert werden können
Lösungsvarianten
Prüfsummenverfahren -Es werden zusätzliche Informationen übertragen, die von den zu übertragenden Daten abhängig sind
Beispiel für $ N=7=2^3 -1 $
$ p_i $
an Stellen 1, 2, 4 (2er-Potenzen)$ d_n $
an Stellen 3, 5, 6, 7Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Daten | p0 | p1 | 0 | p2 | 1 | 1 | 0 |
Die Bitmaske …
$ p_i $
und ergibt sich als Folge von $2^{i}$
Einsen, dann $2^{i}$
Nullen, dann wieder $2^{i}$
Einsen, usw.Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Daten | $p_0$ |
$p_1$ |
0 | $p_2$ |
1 | 1 | 0 |
Bitmaske p0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Bitmaske p1 | - | 1 | 1 | 0 | 0 | 1 | 1 |
Bitmaske p2 | - | - | - | 1 | 1 | 1 | 1 |
Beispiel für N = 7
Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Daten | $p_0$ |
$p_1$ |
0 | $p_2$ |
1 | 1 | 0 |
Bitmaske p0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Bitmaske p1 | - | 1 | 1 | 0 | 0 | 1 | 1 |
Bitmaske p2 | - | - | - | 1 | 1 | 1 | 1 |
$p_0$
= 0 ⊕ 1 ⊕ 0 = 1
$p_1$
= 0 ⊕ 1 ⊕ 0 = 1
$p_2$
= 1 ⊕ 1 ⊕ 0 = 0
Beispiel für N = 7
Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Daten | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Bitmaske p0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Bitmaske p1 | - | 1 | 1 | 0 | 0 | 1 | 1 |
Bitmaske p2 | - | - | - | 1 | 1 | 1 | 1 |
Fehlerfall 1 - Kein Fehler
Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Gesendet | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Empfangen | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Berechnet | 1 | 1 | 0 | ||||
Bitmasken p_i | 1-0-0 | 0-1-0 | 1-1-0 | 0-0-1 | 1-0-1 | 0-1-1 | 1-1-1 |
Berechnung der Paritätsbits
Vergleiche:
👍
Fehlerfall 2 - Datenfehler
Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Gesendet | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Empfangen | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
Berechnet | 0 | 0 | 1 | ||||
Bitmasken p_i | 1-0-0 | 0-1-0 | 1-1-0 | 0-0-1 | 1-0-1 | 0-1-1 | 1-1-1 |
Berechnung der Paritätsbits
$p_0$
= 0 ⊕ 1 ⊕ 1 = 0$p_1$
= 0 ⊕ 1 ⊕ 1 = 0$p_2$
= 1 ⊕ 1 ⊕ 1 = 1Vergleiche:
Folgerung:
Fehler in bit 7
!
Fehlerfall 2 - Paritätsfehler
Bitposition | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|
Aufteilung | Parität | Parität | Daten | Parität | Daten | Daten | Daten |
Gesendet | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
Empfangen | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
Berechnet | 1 | 1 | 0 | ||||
Bitmasken p_i | 1-0-0 | 0-1-0 | 1-1-0 | 0-0-1 | 1-0-1 | 0-1-1 | 1-1-1 |
Berechnung der Paritätsbits
Vergleiche
Folgerung:
Fehler in bit 1
!