Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 13.10.2016 Technische Universität Braunschweig, IPS
Inhaltsverzeichnis Codierung Aspekte der Binär-Codierung Binärcode Codetabellen Codebaum Moderne Text-Kodierung (UTF-8) QR-Code Fehlererkennung und -korrektur 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 2
Überblick Codierung Aspekte der Binär-Codierung 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 3
Codierung Verfahren, welches die Symbole einer Nachricht in eine andere Form bringt ohne den Informationsgehalt einzuschränken. Codierung wird dazu verwendet, die Informationen von der für Menschen verständliche Form in eine für Maschinen verarbeitbare und über Netzwerke kommunizierbare Form umzuwandeln und wieder zurück. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 4
Codierung Verfahren, welches die Symbole einer Nachricht in eine andere Form bringt ohne den Informationsgehalt einzuschränken. Codierung wird dazu verwendet, die Informationen von der für Menschen verständliche Form in eine für Maschinen verarbeitbare und über Netzwerke kommunizierbare Form umzuwandeln und wieder zurück. Beispiel: Morsecode Punkt:. Strich: _ Pause: (nichts)._..... _._.... M O R S E C O D E 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 4
Überblick Codierung Aspekte der Binär-Codierung 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 5
Aspekte der Binär-Codierung Binärcode Codetabellen Codebaum Einsparung von Bits Groß- und Kleinschreibung Informationsgehalt verschiedener Symbole Präfixbildung 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 6
Binärcode 0/1-Code Ein Binärcode besteht nur aus zwei Zeichen, 0 und 1. Diese beiden Zeichen repräsentieren die beiden Zustände Ausgeschaltet und Eingeschaltet, welche von einem Computer gut verarbeitet werden können. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 7
Binärcode Zahlen Zahlensystem, das nur zwei verschiedene Ziffern zur Darstellung von Zahlen benutzt Zahlen werden nur mit Ziffern, welche die Werte Null oder Eins annehmen, dargestellt Stellenwertsystem mit der Basis 2 Zahlen 0 bis 8: 0 0 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8
Binärcode Definition und Darstellung Ziffern z i werden wie im gewöhnlich verwendeten Dezimalsystem ohne Trennzeichen hintereinander geschrieben. Beispiel: Dezimalzahl 29 29 = 1 2 4 + 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 11101 2 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 9
Binärcode Umrechnen in Zahlensysteme Schreiben Sie die Dezimalzahl 42 als Dual-, Oktal- und als Hexadezimalzahl. 42 : 2 = 21 Rest 0 21 : 2 = 10 Rest 1 10 : 2 = 5 Rest 0 5 : 2 = 2 Rest 1 2 : 2 = 1 Rest 0 1 : 2 = 0 Rest 1 Binärzahl = 101010 2 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 10
Binärcode Umrechnen in Zahlensysteme Schreiben Sie die Dezimalzahl 42 als Dual-, Oktal- und als Hexadezimalzahl. 42 : 8 = 5 Rest 2 5 : 8 = 0 Rest 5 Oktalzahl = 52 8 42 : 16 = 2 Rest 10 2 : 16 = 0 Rest 2 Hexadezimalzahl = 2A 16 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 11
Binärcode Binärzahlen Verschiedene Darstellungsformen der Zahl dreiundzwanzig im Binärsystem: [10111 2 ] 10111 2 10111 (2) 10111B 0b10111 HLHHH 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 12
Binärcode Grundrechenarten Addition 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Multiplikation 0 0 = 0 0 1 = 0 1 0 = 0 1 1 = 1 Subtraktion 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 Division 0/0 = n.d. 0/1 = 0 1/0 = n.d. 1/1 = 1 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 13
Welche Weisheit mag sich wohl hinter dem Code 01001 00011 01000 00000 00100 00101 01110 01011 00101 11100 00000 00001 01100 10011 01111 00000 00010 01001 01110 00000 01001 00011 01000 verbergen? Codetabellen ASCII ASCII = American Standard Code for Information Interchange ASCII ist der bekannteste Code. Es handelt sich dabei um eine Tabelle, in der alle Zeichen des (amerikanischen) Alphabets entsprechenden Sequenzen aus 0 und 1 zugeordnet werden. In der nachfolgenden Tabelle wurden die ersten zwei bzw. drei Bits weggelassen. (Leer) 00000 H 01000 P 10000 X 11000 A 00001 I 01001 Q 10001 Y 11001 B 00010 J 01010 R 10010 Z 11010 C 00011 K 01011 S 10011. 11011 D 00100 L 01100 T 10100, 11100 E 00101 M 01101 U 10101 : 11101 F 00110 N 01110 V 10110-11110 G 00111 O 01111 W 10111 # 11111
Codebaum Ein Codebaum vereinfacht die Decodierung. Man geht einfach entlang des jeweiligen Pfads (0 oder 1) und sobald man an ein Symbol gelangt, schreibt man es auf und beginnt von Neuem.
Codebaum Bits und Bytes Byte (engl. Bissen ) ist sozusagen ein Happen aus dem Datensalat eines Computers. Es stellt eine kleine Informationseinheit dar. Bit ist englisch als Verkleinerungsform von Byte zu sehen und auch die Abkürzung für Binary Digit, also deutsch Ziffer im Binärsystem. Ein Bit ist also die kleinste Informationsmenge, die man im Computer identifizieren kann. Da alle Symbole die gleiche Anzahl an Bit haben, können wir ganz einfach berechnen, wie viel Bit eine Nachricht mit 100 Zeichen hat : 100 Zeichen mal 5 Bit pro Zeichen gleich 500 Bit. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 16
Codebaum Bits und Bytes Codieren wir zum Beispiel eine Gen-Sequenz AGATGCCGTTACGA mit diesem Code. 00001001110000110100001110001100011 00111101001010000001000110011100001 Das macht genau 70 Bit. Wenn wir aber einen neuen Code hierfür nehmen, lässt sich die Anzahl der Bits auf 28 senken. 0010001110010110111100011000 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 17
Codebaum Groß- und Kleinschreibung Ohne Groß- und Kleinschreibung: ICH HABE LIEBE GENOSSEN Mit Groß- und Kleinschreibung: Ich habe liebe Genossen Ich habe Liebe genossen Wenn man die Groß- und Kleinschreibung einführt, enthalten alle Symbole mehr Informationen. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 18
Codebaum Informationsgehalt In diesem Text stehen nur die Vokale (A,E,I,O,U) und die Konsonanten N, R und T, die meist verwendeten Buchstaben in unserer Sprache. an atte ieen are ei eine eient, a ra er u i err, eine eit it eru, nun ote erne ieer ei u einer utter. Der gleiche Text, nur fehlen hier alle Vokale. Allerdings ist er deutlich besser lesbar. Hns htt sbn Jhr b snm Hrrn gdnt, d sprch r z hm Hrr, mn Zt st hrm, nn wllt ch grn wdr hm zu mnr Mttr. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 19
Codebaum Informationsgehalt In diesem Text stehen nur die Vokale (A,E,I,O,U) und die Konsonanten N, R und T, die meist verwendeten Buchstaben in unserer Sprache. an atte ieen are ei eine eient, a ra er u i err, eine eit it eru, nun ote erne ieer ei u einer utter. Der gleiche Text, nur fehlen hier alle Vokale. Allerdings ist er deutlich besser lesbar. Hns htt sbn Jhr b snm Hrrn gdnt, d sprch r z hm Hrr, mn Zt st hrm, nn wllt ch grn wdr hm zu mnr Mttr. Hier noch einmal der Originaltext: Hans hatte sieben Jahre bei seinem Herren gedient, da sprach er zu ihm Herr, meine Zeit ist herum, nun wollte ich gerne wieder heim zu meiner Mutter. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 19
Codebaum Informationsgehalt Wenn man unterschiedliche Buchstaben entfernt, entfernt man also auch unterschiedlich viel Informationsgehalt. Das Weglassen von Vokalen scheint nicht so schlimm zu sein wie das von Konsonanten. Das bedeutet, dass nicht jeder Buchstabe die gleiche Menge an Informationen enthält. Dann sollte es doch konsequent sein, wenn nicht jeder Buchstabe die gleiche Anzahl an Bits besäße. Wahrscheinlich könnte man dadurch auch die Größe einer Nachricht und damit die Übermittlungsdauer verringern. Zum Beispiel beim Morsen: der häufigste Buchstabe in unserer Sprache ist das E, dieser wird nur als einzelner kurzer Ton gesendet. Das Q hingegen wird viel seltener verwendet und besitzt beim Morsen auch einen längeren Code lang lang kurz lang. Es liegt also nahe, auch bei der Codierung durch diese Methode Speicherplatz zu sparen. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 20
Codebaum Optimierung Verschieben Sie das E um 2 Stellen nach links. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 21
Codebaum Optimierung Optimierter Codebaum 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 22
Codebaum Optimierung Jetzt versperren wir mit dem E die Buchstaben D, F und G 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 23
Codebaum Präfixbildung Ein Präfix ist ein Wort oder eine Zeichenfolge, die mit dem Anfang einer anderen Zeichenfolge identisch ist. In der Codierung versucht man Präfixe zu vermeiden, da man dann codierte Nachrichten nicht mehr direkt decodieren kann. E ist mit seinem Code 001 also die Präfix zu den Buchstaben D ( 00100 ), F ( 00110 ) und G ( 00111 ). 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 24
Codebaum Präfixlösung Um die drei Buchstaben wieder codierbar zu machen, müssen wir drei anderen Buchstaben einen längeren Code geben. Zum Beispiel Q, X und Y, welche bei der Häufigkeit unter 0,05% liegen und daher nur sehr selten gebraucht werden. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 25
Codebaum Präfixlösung Das selbe Verfahren lässt sich natürlich auch bei anderen Symbolen anwenden. Zum Beispiel bei dem Leerzeichen, welches von allen Symbolen am häufigsten verwendet wird. Andere Satzzeichen wie Doppelpunkt ( : ), Gedankenstrich ( ) oder die Raute ( # ) kommen hingegen nur sehr selten vor. Nehmen wir also das Leerzeichen und verschieben es drei Stellen nach links. Dadurch blockieren die Buchstaben A, B und C. Dann verschieben wir die Satzzeichen Doppelpunkt, Gedankenstrich und Raute um eine Stelle nach rechts und fügen die drei blockierten Buchstaben ein. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 26
Codebaum Präfixlösung 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 27
Codebaum Präfixlösung Allerdings ist A auch ein Buchstabe, der häufig verwendet wird und ist mit einem 6-stelligen Code denkbar schlecht codiert. Demnach ist dies nicht die optimale Lösung für das Problem. Es muss also alles etwas freier im Codebaum getauscht werden. Am besten wird es wohl sein, wenn das Leerzeichen sowie das E 3 Bits erhalten, N, I, S und R jeweils 4 Bit, A, T, D, H, U, L, C und G 5 Bit, Q, Doppelpunkt, Gedankenstrich und Raute 7 Bit und die restlichen Zeichen 6 Bit erhalten. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 28
Codebaum Präfixlösung Mit diesem Codebaum lässt sich nun die Bit Anzahl dieses Satzes: HANS ZOG EIN TUECHLEIN AUS DER TASCHE, WICKELTE DEN KLUMPEN HINEIN, SETZTE IHN AUF DIE SCHULTER UND MACHTE SICH AUF DEN WEG NACH HAUS., welcher mit dem Anfangsbaum 670 Bit hätte, auf 552 Bit verringern. Dieses Verfahren wird für Archive wie Zip, ARJ, RAR usw. genutzt. Diese Programme nutzen allerdings auch, dass ganze Worte häufig vorkommen und können somit bis über 90% Speicherplatz sparen. Andere Verfahren komprimieren ganze Blöcke von Daten (bzip2) oder auch Teilwörter (LZ77, LZMA). 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 29
Moderne Text-Kodierung (UTF-8) In Anbetracht der immer stärkeren Globalisierung und des Wunsches eine Kodierung für alle Sprachen der Welt anzubieten, wurde Unicode entwickelt. Unicode definiert Codepoints für eine Vielzahl an Zeichen die benutzt werden (z.b. Griechisch, Arabisch, Chinesisch). Es gibt im aktuellen Standard 6 um die 1.1 Millionen definierte Codepoints. Die effiziente Codierung der Texte ist hier äußerst wichtig. UTF-8 ist in den ersten 128 Codepoints identisch mit ASCII, das bedeutet, dass die weit verbreiteten ASCII-Texte automatisch UTF-8 konform sind. 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 30
Moderne Text-Kodierung (UTF-8) Ein UTF-8 Zeichen, dass mit einer 1 beginnt zeigt an, dass es entweder der Beginn eines Mehr-Byte-Zeichens oder Teil eines solchen Zeichens ist. Ein UTF-8 Zeichen kann somit 1 bis 6 Byte lang sein, wobei die am häufigsten genutzten Zeichen in den unteren Code-Regionen zu finden sind. Diese Kodierung ist selbstkorrigierend Falls Teile eines Zeichens verloren gehen, ist nur das eine Zeichen betroffen, der Beginn eines neuen Zeichens kann ohne Probleme ermittelt werden. Bit Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 7 0xxxxxxx 11 110xxxxx 10xxxxxx 16 1110xxxx 10xxxxxx 10xxxxxx 21 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 26 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 31 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
QR-Code Ursprünglich für die Logistik von Toyota entwickelt. Spezifikationen sind offen Lizenz- und kostenfrei 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 32
Fehlererkennung und -korrektur Bei der Übertragung von Daten können Fehler auftreten. Diese Fehler sollen erkannt werden oder besser: Die Fehler sollen direkt korrigiert werden. Beispiel: Hamming-Distanz Mögliche Codewörter: A 000000 B 111000 C 010110 D 111111 Welcher Abstand (wie viele verschiedene Bits) existiert zwischen den Wörtern? 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 33
Hamming-Distanz Mögliche Codewörter: A 000000 B 111000 C 010110 D 111111 Berechnung der Distanz durch verxoren der einzelnen Codewörter und zählen der Bits mit 1. Definition von XOR (= Addition in Z 2 ): 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 d > 2 f, d = Distanz, f = Bit-Fehler 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 34
Hamming-Distanz Mögliche Codewörter: A 000000 B 111000 C 010110 D 111111 Empfangendes Codewort ist: 010000 Was ist das richtige Codewort? Warum ist es dieses? 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 35
Hamming-Distanz Zu Übertragende Daten: Index 1 2 3 4 5 6 7 8 9 10 11 12 Daten?? 0? 1 0 0? 1 1 0 0 Positionen, an denen eine 1 steht: 5 (0101), 9 (1001), 10 (1010) 101 = (05) 1001 = (09) xor 1010 = (10) 110 = (06) Index 1 2 3 4 5 6 7 8 9 10 11 12 Daten 0 1 0 1 1 0 0 0 1 1 0 0 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 36
Hamming-Distanz Zu Übertragende Daten: Index 1 2 3 4 5 6 7 8 9 10 11 12 Daten?? 0? 1 0 0? 1 1 0 0 Positionen, an denen eine 1 steht: 5 (0101), 9 (1001), 10 (1010) 101 = (05) 1001 = (09) xor 1010 = (10) 110 = (06) Index 1 2 3 4 5 6 7 8 9 10 11 12 Daten 0 1 0 1 1 0 0 0 1 1 0 0 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 37
Zusammenfassung Codierungen (Zahlen und Buchstaben) Morgen: Codierungen (Bilder und Musik) 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 38
Danke Vielen Dank für Ihre Aufmerksamkeit! 13.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 39