Lehrveranstaltung: Einführung in die Informatik 26.10.2003 Übungsblatt 3 © Thomas Aichholzer ([email protected]) Aufgabe 1 a) Geben Sie für das Quellalphabet: = , + , - , * , / , ^ , ( , ) , [ , ] , { , } sowohl eine Codierung fester als auch variabler Länge in das Zielalphabet: a, b, c an. Zeichnen Sie die entsprechenden Codebäume auf. Welches allgemeine Merkmal unterscheidet diese beiden Codebäume? b) Welches Problem sehen Sie bei der Weiterleitung von mit variabler Länge codierten Codewörtern, welches bei der mit fester Länge codierten Variante nicht auftritt? ad a) = , + , - , * , / , ^ , ( , ) , [ , ] , { , } sind 12 Möglichkeiten die codiert werden sollen. ln(12) 2,4849... fester Länge werden daher 3 log(12) = = = 2,2618... also 3 Stellen benötigt. ln(3) 1,0986... Codebaum fester Länge: a c b a b c a a c a b c a b c a b c a b c a c = + * / ^ ( ) [ ] { } Codebaum variabler Länge: a b = a b * / c ^ c + - a b c ( ) [ a ] b c { } 31 + 32 = 3 + 9 = 12 Möglichkeiten der Darstellung von Codewörtern à voller Baum. ad b) Bei variabler Länge muss ein festgelegt sein wann das Codewort endet und das nächste anfängt. Es muss daher ein Stoppzeichen oder etwas derartiges vereinbart werden um das Ende eines Codewortes festzulegen. Bei fester Länge hingegen ist das egal, da jedes Codewort die gleiche Länge besitzt und somit eindeutig bestimmt ist. Aufgabe 2 a) Wie viele Zahlen kann ein Codesystem über ein Zielalphabet, bestehend aus 2 Zeichnen, mit max. Codewörterlänge 8 codieren, wenn wir - feste Codierung benützen? - variable Codierung benützen? b) Wie viele Stellen müssten die Codewörter eines Binärcodes mindestens besitzen, um ein aus 777 verschiedenen Zeichnen bestehendes Quellalphabet - mit fester Länge zu codieren? - mit variabler Länge zu codieren? ad a) Bei fester Codelänge werden nur die Enden (Blätter) des Codebaumes als Codewort verwendet. Es gibt daher 28 Möglichkeiten für Codewörter. Bei variabler Länge ist das anders. Hier kann jede Ebene außer der Wurzel selbst eine Möglichkeit sein ein Codewort darzustellen. Es gibt daher 29 – 2 (28+1-1-1 (Wurzel)) Möglichkeiten. Seite 1 Lehrveranstaltung: Einführung in die Informatik 26.10.2003 Übungsblatt 3 © Thomas Aichholzer ([email protected]) ad b) Bei fester Länge die Anzahl der Stellen zu ermitteln bei vorgegebener Anzahl der Möglichkeiten (777) ist relativ einfach. Man rechnet das Ergebnis des 2er Logarithmus aus und rundet das Ergebnis auf: 2log(777) ln(777) 6,65544... aufrunden ergibt: 10 (Bits) = = 9,60177... 2 log(777) = ln(2) 0,69314... Bei variabler Länge ist es etwas komplizierter. Man berechnet auch zuerst wie bei fester Länge die Bits und zieht dann vom Ergebnis ein Bit ab. Man muss jedoch darauf achten, das die Anzahl der Möglichkeiten bei der so errechneten Bits – Anzahl nicht zu niedrig ist: 9 Bits … 210 – 2 = 1022 > 777 è daher reichen 9 Bits aus. Aufgabe 3 a) Wofür sind Paritätsbits geeignet? Zeigen Sie eigene Beispiele, die in der Vorlesung nicht behandelt wurden! b) Wie kann man Sonderzeichen für Drucker in einem 7-bit-Code darstellen? ad a) Das Paritätsbit, oder auch Paritybit ist nur für einfache Fehlererkennung geeignet. Somit können einzelne Fehler in einem Codewort erkannt werden. Das Prinzip ist einfach: Man hat ein Codewort mit der Länge n und je nach Vereinbarung wird das Paritätsbit bei gerader / ungerader Anzahl der 1en im Codewort auf logisch 0 oder 1 gesetzt. Sinn dahinter ist jener, es können somit in einem Codewort der lange n + 1 (Paritätsbit) nur eine gerade Anzahl von 1en vorkommen (sollte die Vereinbarung anders getroffen sein, dann nur ungerade Anzahlen von 1en). Beispiele: In unserem Beispiel wird das Paritätsbit bei gerader Anzahl von 1en auf 0 gesetzt, sonst auf 1. Codewort (7 Bit) Paritätsbit neues Codewort (8 Bit) 0100110 1 10100110 1001011 0 01001011 Sollte nun ein einziges Bit umspringen, so wird die Anzahl der 1en ungerade und es kann daher der Fehler entdeckt werden. Sollten jedoch mehrere Bits umspringen sodass die Anzahl der 1en gerade bleibt, so wird der Fehler unerkannt bleiben. ad b) Man vereinbart über nichtdarstellbare Zeichen eine ESC – Sequenz (ESCAPE – Sequenz). Diese ESC – Sequenz lässt den Drucker in einen anderen Modus umschalten und dort kann dann ein eigener Codesatz verwendet werden (Sonderzeichen, Farbeinstellungen, etc), der dann auch die Steuerung des Druckers enthalten kann. Aufgabe 4 Geben Sie eine binäre Codierung fester Länge für die Zustände eines Joysticks an, welcher in 4 Richtungen bewegt werden kann und zwei Tasten hat! (Die Tasten können gleichzeitig gedrückt werden, ebenso kann der Arm gleichzeitig in eine Richtung bewegt werden) Möglichkeiten: à 4 Richtungen à 4 Möglichkeiten à 2 Tasten auch gleichzeitig à 1 + 3 Möglichkeiten ( keine, jeweils eine, beide) + Armbewegung à 3 * 4 Möglichkeiten (Tasten gedrückt) insgesamt ergibt sich daher eine Anzahl von 20 Möglichkeiten. ln(20) 2,9957... = = 4,3219... aufrunden ergibt: 5 (Bits) 2 log(20) = ln(2) 0,6931... Es werden daher 5 Bits benötigt um alle möglichen Zustände des Joysticks zu codieren. Seite 2 Lehrveranstaltung: Einführung in die Informatik 26.10.2003 Übungsblatt 3 © Thomas Aichholzer ([email protected]) Aufgabe 5 Wandeln Sie nachvollziehbar (ohne Taschenrechner!) um: - 10112 à Dezimal - 10118 à Dezimal - 101116 à Dezimal - 7410 à Binär - 57718 à Hexadezimal - 2607 à N3 (eine Zahl zur Basis 3) 10112 à Dezimal 1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 = 1 + 2 + 8 = 1110 10118 à Dezimal 1 × 80 + 1 × 81 + 0 × 82 + 1 × 83 = 1 + 8 + 512 = 52110 101116 à Dezimal 1 × 160 + 1 × 161 + 0 × 162 + 1 × 163 = 1 + 16 + 256 × 16 = 17 + 4096 = 411310 7410 à Binär 74 : 2 = 37 (0 Rest) 37 : 2 = 18 (1 Rest) (Rest lesen) 18 : 2 = 9 (0 Rest) 9 : 2 = 4 (1 Rest) Binär daher: 10010102 = 7410 4 : 2 = 2 (0 Rest) 2 : 2 = 1 (0 Rest) 1 : 2 = 0 (1 Rest) 57718 à Hexadezimal 57718 à Binär à Hexadezimal 58 … 1012 78 … 1112 18 … 0012 daher 57718 = (101 111 111 001)2 = (1011 1111 1001)2 10112 = 0xB 11112 = 0xF 10012 = 0x9 daher: (1011 1111 1001)2 = 0xBF9 2607 à N3 (eine Zahl zur Basis 3) 2607 à Dezimal à N3 (eine Zahl zur Basis 3) 2607 = 0 × 70 + 6 × 71 + 2 × 72 = 6 × 7 + 2 × 49 = 42 + 98 = 14010 14010 à N3 (eine Zahl zur Basis 3) 140 : 3 = 46 (2 Rest) 46 : 3 = 15 (1 Rest) 15 : 3 = 5 (0 Rest) N3 = 120123 = 2 × 30 + 1 × 31 + 0 × 32 + 2 × 33 + 1 × 34 5 : 3 = 1 (2 Rest) = 2 + 3 + 2 × 27 + 81 = 5 + 54 + 81 = 140 10 1 : 3 = 0 (1 Rest) Seite 3 Lehrveranstaltung: Einführung in die Informatik 26.10.2003 Übungsblatt 3 © Thomas Aichholzer ([email protected]) Aufgabe 6 Welche Zahlen enden im Zahlensystem 3 und im Zahlensystem 5 mit der Ziffer 1? Geben Sie Beispiele! Zahlen die im Zahlensystem 3 mit 1 enden haben bei einer Modulo – Division als Ergebnis 1 (1 Rest). Das gleiche gilt analog für das Zahlensystem 5. Beispiele: Dezimalsystem 3er System Rest durch 3 10 1013 (= 32 + 30 = 9 + 1 = 1010) 1 2 1 0 16 1 1213 (=3 + 2 × 3 + 3 = 9 + 6 + 1 = 1610) Dezimalsystem 16 21 5er System 315 (= 3 × 51 + 50 = 15 + 1 = 1610) 415 (= 4 × 51 + 50 = 20 + 1 = 2110) Rest durch 5 1 1 Aufgabe 7 Führen Sie folgende Rechnungen nachvollziehbar (ohne Taschenrechner!) aus: - 110111002 + 111110012 - 101110002 – 011001112 - 101012 * 1012 - 11111012 : 1012 110111002 + 111110012 : 110111002 + 111110012 1110101012 1110101012 = 46910 101110002 – 011001112 : 101110002 – 011001112 10100012 10100012 = 8110 101012 * 1012 101110002 * 1012 101110002 000000002 101110002 11100110002 11100110002 = 92010 11111012 : 1012 11111012 : 1012 = 110012 010 101 001 010 101 000 Rest 110012 = 2510 Seite 4