Kapitel 0: Zeichencodierung



Ähnliche Dokumente
Kapitel 3. Codierung von Text (ASCII-Code, Unicode)

Empfänger. Sender. Fehlererkennung und ggf. Fehlerkorrektur durch redundante Informationen. Längssicherung durch Paritätsbildung (Blockweise)

Informatikgrundlagen I Grundlagen der Informatik I

Frank Weinhold Professur VSR Fakultät für Informatik TU Chemnitz Mai 2011

Grundlagen der Technischen Informatik. 2. Übung

Grundzüge Wirtschaftsinformatik KE 1 Ausgabe Seite 28 von 178

Grundlagen der Technischen Informatik. Codierung und Fehlerkorrektur. Kapitel 4.2

Übung zur Wirtschaftsinformatik I. Zahlensysteme / Codierung

Grundlagen Digitaler Systeme (GDS)

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Zahlen und Zeichen (1)

Hauptspeicherinhalt. Ton. Vektorgrafik Bitmapgrafik Digit. Video. 1. Darstellung von Daten im Rechner. Abb. 1.1: Einteilung der Daten

Theoretische Grundlagen der Informatik WS 09/10

Vertiefungsstoff zum Thema Darstellung von Zahlen

Grundlagen der Informatik I Informationsdarstellung

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Binär Codierte Dezimalzahlen (BCD-Code)

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

2 Darstellung von Zahlen und Zeichen

Merke: Mit jedem zusätzlichen Bit verdoppelt sich die Anzahl der darstellbaren Zahlen bzw. Zustände

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Informationsdarstellung im Rechner

Grundlagen der Informatik (BSc) Übung Nr. 5

Organisation. Was kommt zum Test? Buch Informatik Grundlagen bis inkl. Kapitel 7.4 Wissensfragen und Rechenbeispiele

Computerarithmetik ( )

Codierungsverfahren SS Reed-Solomon-Codes zur Mehrblock-Bündelfehler-Korrektur

Einführung in die Informatik

Zahlensysteme: Oktal- und Hexadezimalsystem

Rechnerstrukturen WS 2012/13

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

0 Im folgenden sei die Wortlänge gleich 8 (d. h.: es wird mit Bytes gearbeitet).

Escape-Sequenzen. Dr. Norbert Spangler

Kapitel 1. Zahlendarstellung. Prof. Dr. Dirk W. Hoffmann. Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik

9 Codes. Hochschule für Angewandte Wissenschaften Hamburg FACHBEREICH ELEKTROTECHNIK UND INFORMATIK DIGITALTECHNIK 9-1

2. Negative Dualzahlen darstellen

Grundlagen der Technischen Informatik. Codierung und Fehlerkorrektur. Kapitel 4.2. Codewörter. Codewörter. Strukturierte Codes

Übung RA, Kapitel 1.2

Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert.

Lineare Codes. Dipl.-Inform. Wolfgang Globke. Institut für Algebra und Geometrie Arbeitsgruppe Differentialgeometrie Universität Karlsruhe 1 / 19

Primzahlen und RSA-Verschlüsselung

Anzahl Pseudotedraden: Redundanz: Weitere Eigenschaften?

Daten, Informationen, Kodierung. Binärkodierung

Einführung in die Kodierungstheorie

Technische Informatik - Eine Einführung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Unicode und UTF-8. Anna-Katharina Wurst. 28. April WP5 Angewandte Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 11

Binärdarstellung von Fliesskommazahlen

7 Rechnen mit Polynomen

Skript. EDV Grundlagen

Daten verarbeiten. Binärzahlen

2 Darstellung von Zahlen und Zeichen

, WS2012 Übungsgruppen: Mo.,

Gliederung. Was ist der Unicode? Warum gibt es den Unicode? Wie funktioniert er? Wo ist mein Schriftzeichen? Kritische Stimmen

Theoretische Informatik SS 04 Übung 1

Protokollgrundlagen (Schicht 2)

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

Kapitel 4A: Einschub - Binärcodierung elementarer Datentypen. Einschub: Teile aus Kapitel 2 in Küchlin/Weber: Einführung in die Informatik

Binär- und Hexadezimal-Zahl Arithmetik.

15 Optimales Kodieren

Leseprobe. Taschenbuch Mikroprozessortechnik. Herausgegeben von Thomas Beierlein, Olaf Hagenbruch ISBN:

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

X = {x 1,x 2,...} sei ein Symbolalphabet eines Kodes. In diesem Kode sind card(x) = X Sachverhalte darstellbar

Programmieren in C Einführung

Binäre Gleitkommazahlen

Modul 114. Zahlensysteme

Zahlensysteme Seite -1- Zahlensysteme

Zahlensysteme. Zahl Stellenwert Zahl Zahl =

Codierung. H.-G. Hopf

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

4. Woche Decodierung; Maximale, Perfekte und Optimale Codes. 4. Woche: Decodierung; Maximale, Perfekte und Optimale Codes 69/ 140

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Kapitel 4 Leitungscodierung

Das Rechnermodell - Funktion

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

Grundlagen der Datenverarbeitung

Barcode- Referenzhandbuch

Einstieg in die Informatik mit Java

Lösungen: zu 1. a.) b.) c.)

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Advanced Encryption Standard. Copyright Stefan Dahler 20. Februar 2010 Version 2.0

Zeichen bei Zahlen entschlüsseln

Einführung in die Informatik I

Einstieg in die Informatik mit Java

Code-Arten und Code-Sicherung. Literatur: Blieberger et.al.: Informatik (Kap. 3 und 4), Springer-Verlag R.-H. Schulz: Codierungstheorie, Vieweg

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

1 Mathematische Grundlagen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

DEUTSCHE BUNDESBANK Seite 1 Z Prüfzifferberechnungsmethoden zur Prüfung von Kontonummern auf ihre Richtigkeit (Stand: September 2015)

Grundbegriffe der Informatik

Übungen zu Informatik 1

QR Code. Christina Nemecek, Jessica Machrowiak

CODIERUNGSTHEORIE KURS ZELL AN DER PRAM, FEBRUAR 2005

Grundlagen der Informatik

Algorithmische Kryptographie

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

2 Darstellung von Zahlen und Zeichen

Transkript:

Kapitel 0: Zeichencodierung Technische Grundlagen der Informatik 2 SS 2009 R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt

Inhalt Kap 0. Zeichencodierung 0-2 0.1 Zeichen, Alphabete, Codierung 0.2 Zifferncodes 0.3 Alphanumerische Codes ASCII ANSI PC-ASCII Unicode 0.4 Codesicherung 0.5 Kompression 0.6 Erkennung 0.7 Vertiefung 5-Bit-Fernschreibcode Nr. 2 8-Bit-Code der Zuse Rechenmaschine Z1 8-Bit-EBCDIC Berechnung von UTF-16 Zyklische Blockprüfung (Cyclic Redundancy Check) Logiksymbole Hinweise: Bei der Herstellung der Folien sind auch Folien von Dr. Flik, TU Berlin, aus der Lehrveranstaltung Informatik 1 (Aufbau und Funktionsweise programmierbarer digitaler Systeme) WS 2003/2004 verwendet worden. Das Teil-Skript über Zeichencodierung soll die Folien Kap. 0 ergänzen.

0.1 Zeichen, Alphabet, Codierung 0-3 Daten Informationen, die in einer verabredeten Form dargestellt werden Alphabet (Zeichenvorrat) Eine Menge von Zeichen Ein Zeichen (auch Symbol) ist ein Element aus einem Alphabet Zahlen, Text, Bilder usw. meist: Folge von Zeichen Zeichenstring: Hallo 007 Zahlenstring: 98700123 Bitstring: 1100 0101 1011 Binäres Alphabet: B={0,1} oder {O,L} oder {false, true} Binärzeichen (binary digit, bit, Binärziffer) x є B

Alphabete 0-4 Alphabet {0,1,2,3,4,5,6,7,8,9} Dezimalziffern {a,b,c,...,a,b,c,...,z} {rot, rotgelb, grün, gelb, aus} {spring, summer, autumn, winter} {1.0, 1.3, 1.7, 2.0, 2.3, 2.7, 3.0, 3.3, 3.7, 4.0, 5} Buchstaben Verkehrsampelsignale seasons Noten

Codierung Ein Zeichen aus dem Definitionsbereich A wird durch ein Zeichen aus einer (meist anderen) Menge B von Zeichen (Wertebereich, Bildbereich) eindeutig dargestellt. Allgemein: Injektive Abbildung (eindeutige Zuordnung): A B, b=c(a) Abbildung sollte linkstotal sein (jedes Zeichen a kann codiert werden), damit ist die Abbildung umkehrbar A=Menge von gegebenen Zeichen B=Menge von Code-Zeichen (oft auch Codewörter) Alphabete A und B können gleich oder verschieden sein. Insbesondere Binärcodierung: B ist ein Binärwort (eine Folge von n Bits) durch n Bits lassen sich maximal 2 n Zeichen codieren. injektiv: Jedes Bild hat höchstens ein Urbild A Hexadezimalziffern Dezimalzahlen 0 bis 15 B Binärcodierung 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 0-5

Bezeichnungen 0-6 Unter einem Wort versteht man meist ein im Computer gespeichertes n-bit-binärwort, n ist oft = 16, 32, 64,... Byte: 8-Bit-Wort wird auch als Einheit benutzt, z.b. um die Kapazität eines Speichers anzugeben Speicher der Größe 16 MByte = 2 4 * 2 20 Byte Nibble: 4-Bit-Wort Ein Byte beteht aus 2 Nibbles. Im Zusammenhang mit binärcodierten Zahlen (folgt) werden 4 Bits zur Codierung einer Dezimalziffer benutzt, die als Tetraden bezeichnet werden. MSB = Most Significant Bit, höchstwertige Bitstelle LSB = Least Significant Bit, niedrigstwertige Bitstelle

0.2 Zifferncodes/Codierung von Dezimalziffern 0-7 Warum werden Dezimalziffern codiert? Ein Rechner kann nur Bitfolgen speichern Für die Ein/Ausgabe wird die dezimale Form verlangt entweder konvertieren Zahlenkonvertierung benötigt Zeit und kann Rundungsfehler verursachen oder Arithmetik im Rechner mit binärcodierten-dezimalzahlen wird noch verwendet in kommerziellen Anwendungen, COBOL Dezimalzahl Eingabe Konvertierung Dualzahl Arithmetik im Computer Dualzahl Ausgabe Konvertierung Dezimalzahl

Binärcodierte Dezimalzahl, BCD-Zahl 0-8 Die Dezimalziffern werden durch 4 Bits binär codiert. Binäre Codierung (Duale Codierung) bedeutet allgemein: Zur Darstellung des Wertes (x 0) einer Zahl oder Ziffer wird genau die Dualzahl benutzt, die den Wert x repräsentiert. Der Wert einer Dualzahl ergibt sich, indem die binären Ziffern mit den Gewichten...,8,4,2,1 multipliziert werden und die Summe gebildet wird. Dezimalziffern 0 bis 9 Binärcodierung 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 unbenuzte Codierungen, Pseudotetraden 1010 1011 1100 1101 1110 1111

Aiken-Code 0-9 Dezimalziffer Aiken 0 0000 1 0001 2 0010 3 0011 4 0100 5 1011 6 1100 7 1101 8 1110 9 1111 Der Aiken-Code kann zur Darstellung von Dezimalziffern verwendet werden. Inzwischen aber nicht mehr üblich. Durch Negierung der einzelnen Bits entsteht das sogenannte 9-Komplement. Das 9-Komplement hat die Eigenschaft, daß für jede Dezimalziffer einzeln die Differenz gegen 9 gebildet wird. Das 9-Komplement kann zur Darstellung von negativen Zahlen und zur Subtration eingesetzt werden. Näheres zur Zahlendarstellung und Komplementbildung im nächsten Kapitel. Beispiele für das 9-Komplement 9 (1111) 8(1110) = 1 (0001) 9 (1111) 5(1011) = 4 (0100) Gewicht 2421 Bits einfach negieren

Gray-Code Dezimalziffer Gray 0-10 Gehört zu den einschrittigen Codes Benachbarte Codewörter unterscheiden sich dabei nur in einem Bit. Verwendung Vermeidung von falschen Codewörtern bei Umwandlung von stetigen Signaländerungen Messung von Positionen vergl. AD-Wandler Die 0.-Stelle der Codierung ergibt sich immer aus der vertikalen Wiederholung der Zahlenfolge "0 11 0", die 1. aus der Wiederholung "00 1111 00", die 2. aus der Wiederholung von viermal "0", achtmal "1" und wieder viermal "0" usw. vergl. KV-Diagramme 0 0000 1 0001 2 0011 3 0010 4 0110 5 0111 6 0101 7 0100 8 1100 9 1101 10 1111 11 1110 12 1010 13 1011 14 1001 15 1000 Stelle 3210

Gray-Code, Historie 0-11 Der Namensgeber des Gray-Codes ist der Ingenieur Frank Gray, der für die Nutzung des Gray-Codes im Jahre 1953 das U. S. Patent 2 632 058 "Pulse Code Communication erhielt. Gray-Codes wurde schon früher genutzt, z. B. im Jahre 1878 von Émile Baudot in der Telegraphie. Auch heute wird der Gray-Code noch verwendet, z. B. bei der Analog/Digital-Wandlung oder bei der Bestimmung von Windrichtungen und Windgeschwindigkeiten. Nutzung des Gray-Codes bei der Winkelbestimmung mittels Codierscheibe: s. nächste Folie http://www.informatik.uni-hamburg.de/tkrn/world/abro/mn1/mnw03k04.pdf

Codierscheibe 0-12 http://home.t-online.de/home/uwe.mnich/projekte/wetterstation/sensoren/windrichtung/windrichtung.htm Bild 1: Codierungsscheibe Der Sensor besteht aus einer durchsichtigen Codierungsscheibe. Die Achse der Scheibe ist mit der Windfahne verbunden. Die Scheibe ist in Ringe unterteilt und jeder Ring in Sektoren. Einige der Sektoren sind mit einer lichtundurchlässigen Farbe beschichtet (Bild 3). Für jeden Sektor kann die Beschichtung jetzt so gewählt werden, daß durch nebeneinanderliegende Sensoren, nach dem Lichtschranken Prinzip, ein binärer Code erzeugt werden kann (Bild 1).

Vorteil der Gray-Codierung 0-13 Bild 2: Binär codiert Bild 3: Gray codiert Bild 4: Meßunsicherheit beim Positionswechsel

Vorteil der Gray-Codierung (2) 0-14 Bild 2 zeigt als Beispiel eine Scheibe mit einer binären Codierung. Der Nachteil ist jedoch, das sich bei einem Wechsel der Sektoren immer mehrere Bits gleichzeitig ändern können. Die Wahrscheinlichkeit einer Fehlinformation ist dadurch relativ hoch. Um diese Fehlerquelle zu vermeiden, wird der Gray-Code benutzt. Bild 3 zeigt als Beispiel eine Scheibe mit einer Gray-Code Kodierung. Der wesentliche Unterschied liegt darin, dass sich bei einer Sektoränderung immer nur 1 Bit ändert. Der Sinn liegt in der minimalen Meßunsicherheit. Durch die ungenaue Abtastung beim Übergang von der abgeschatteten Fläche zur durchsichtigen Fläche wird demnach lediglich der Übergang von einer Position zur nächsten etwas verschoben, es kann jedoch nicht zur Ausgabe von völlig falschen Positionswerten kommen (Bild 4).

Umwandlung Graycode Binärcode 0-15 g3 g2 g1 b3 b2 b1 Graycode Binärcode b n-1 = g n-1 b i = g i exor b i+1 für i=n-2..0 g0 b0 g3 g2 g1 g0 b3 b2 b1 b0 Binärcode Graycode g n-1 = b n-1 g i = b i exor b i+1 für i=n-2..0

Prüfbare Codes 0-16 Ziel : Bitfehler erkennen oder sogar korrigieren Dezimalziffer 2-aus-5 74210 Biquinär 50 43210 0 11000 01 00001 1 00011 01 00010 2-aus-5-Code Zwei Bits müssen 1 sein Sonderfall 0 (Summe der Gewichte ergibt 11) 2 00101 01 00100 3 00110 01 01000 4 01001 01 10000 5 01010 10 00001 6 01100 10 00010 Biquinär-Code Im linken und rechten Teil des Codeworts muss jeweils genau eine 1 stehen 7 10001 10 00100 8 10010 10 01000 9 10100 10 10000

0.3 Alphanumerische Codes 0-17 Zweck: Codierung von Buchstaben, Ziffern, Sonderzeichen, Kontrollzeichen für die Datenkommunikation 5-Bit-Code: Fernschreibcode (s. Vertiefung) 6-Bit-Code: BCDI 7-Bit-Code: ASCII (American Standard Code for Information Interchange) 8-Bit-Codes EBCDIC (IBM Großrechner) (s. Vertiefung) ASCII-Erweiterungen ANSI-Code (American National Standards Institute) IBM PC-850 8/16/32-Bit-Code: Unicode

ASCII 0-18 American Standard Code for Information Interchange of the American National Standards Institute). Bei diesem Code wird jedes Zeichen durch eine Folge von 7 Bits festgelegt (dies erlaubt 128 verschiedene Zeichenkodierungen). Zur Speicherung der Zeichen ist bei dieser 7-Bit-Darstellung sofort naheliegend, dass man ein Zeichen in jeweils einem Byte ablegt. Allerdings ist die Frage, wie man das freie achte Bit verwendet. Manchmal wird dieses Bit ganz einfach auf 0 gesetzt, manchmal dient es als Paritätsprüfbit oder es wird dazu benutzt, weitere 128 Zeichen darzustellen.

ASCII-Tabelle 0-19 0 1 2 3 4 5 6 7 0 NUL DLE SP 0 @ P ` p 1 SOH DC1! 1 A Q a q 2 STX DC2 2 B R b r 3 ETX DC3 # 3 C S c s 4 EOT DC4 $ 4 D T d t 5 ENQ NAK % 5 E U e u 6 ACK SYN & 6 F V f v 7 BEL ETB 7 G W g w 8 BS CAN ( 8 H X h x 9 HT EM ) 9 I Y i y A LF SUB * : J Z j z B VT ESC + ; K [ k { C FF FS, < L \ l D CR GS = M ] m } E SO RS. > N ^ n ~ F SI US /? O _ o DEL höherwertigen 3 Bits Dargestellt ist die Internationale Referenzversion IRV: 84 + 12 Zeichen Die hellblau unterlegten 12 Zeichen können national belegt werden Deutsche Referenzversion DIN66003 @, [ Ä, \ Ö, ] Ü, { ä, ö, } ü, ~ ß Steuerzeichen Beispiele "0" = hex 30 = 011 0000 "o" = hex 6F = 110 1111 CR = hex 0D = 000 1101 LF = hex 0A = 000 1010 SP = hex 20 = 010 0000

ASCII-Steuerzeichen 0-20 Code-Erweiterungszeichen SO Shift out Dauerumschaltung (auf Code- Erweiterung) SI Shift in Rückschaltung ESC Escape Escape Formatsteuerzeichen Gerätesteuerzeichen DC1 Device control one Gerätesteuerzeichen eins DC2 Device control two Gerätesteuerzeichen zwei DC3 Device control three Gerätesteuerzeichen drei DC4 Device control four Gerätesteuerzeichen vier BS Backspace Rückwärtsschritt HAT Horizontal tabulation Zeichen-Tabulator LF Line feed Zeilenschritt VT Vertical tabulation Zeilen-Tabulator FF Form feed Formularvorschub CR Carriage return Wagenrücklauf Sonstige Steuerzeichen NUL Null Null BEL Bell Klingel CAN Cancel Ungültig EM End of medium Aufzeichnungsende SUB Substitute Substitution (Ersatz für fehlerhaftes oder ungültiges Zeichen

ASCII-Steuerzeichen 0-21 Übertragungssteuerzeichen SOH Start of heading Kopfanfang STX Start of text Textanfang ETX End of text Textende Informationstrennzeichen US Unit separator Teilgruppen- Trennzeichen RS Record separator Untergruppen- Trennzeichen GS Group separator Gruppen-Trennzeichen EOT End of transmission Übertragungsende ENQ Enquiry Stationsaufforderung FS File separator Hauptgruppen- Trennzeichen ACK Acknowledge Positive Rückmeldung DLE Data link escape Datenübertragungsumschaltung NACK Negative acknowledge Negative Rückmeldung SYN Synchronous idle Synchronisierung ETB End of transmission block Datenübertragungsblock Ende

ASCII-Erweiterung: Latein 1 "ANSI-Code" 0-22 Latein 1: Schriftzeichen der westeuropäischen Sprachen, Amerika, Australien, Teile von Afrika (Latein 2: Schriftzeichen der osteuropäischen Sprachen) werden im rechten Teil codiert ASCII Latin-1 Supplement

PC-ASCII, Codetab. 850 0-23 Sehr verbreitet unter dem Betriebssystem DOS. Enthält Latein1-Zeichen und weitere Nationale Zeichen Pseudografik-Zeichen Sonderzeichen

Unicode 0-24 Problem: Zeichenvorrat ist bei 7 oder 8 Bit zu gering, um die Zeichen verschiedener Sprachen sowie von Sonderzeichen gleichzeitig darstellen zu können. Unicode bzw. ISO/IEC 10646 definieren eine Codetabelle für einen universellen Zeichensatz Universal Character Set (UCS), der alle Schriftzeichen der lebenden und toten Sprachen der Welt umfassen soll. codiert sind derzeit 100 000 Zeichen. ISO/IEC 10646-1 (2008: Unicode 5.1.0) standardisierte Zeichensätze (Codetabellen) sind darin enthalten Manche Codes repräsentieren nur Bausteine von Schriftzeichen Unicode ist untergliedert in Codebereiche zu jeweils 16 Bit bzw. 65.536 Zeichen, sogenannte Ebenen (Planes). Die wichtigste Ebene ist die erste Ebene, die Basic Multilingual Plane (BMP), auch Plane 0 genannt. (von hex 0000 bis FFFF ) Unicode-Block Basis-Lateinisch 0000-007F, Entspricht ASCII. Unicode-Block Lateinisch-1, Ergänzung 0080-00FF...

Einige standardisierte Codetabellen 0-25 Sprache Kodetabelle Umfang Englisch US-ASCII (ISO 646 IRV:1991) 94 Deutsch/Franz. ISO 8859-1:1987 191 Chinesisch GB 2312-80 7.445 Chinesisch Big 5 13.523 Japanisch JIS X 0208-1990 6.897 Koreanisch KS C 5601-1992 8.224

UTF: Unicode Transformation Format 0-26 Die Zeichen können mit fester Wortlänge oder variabler Wortlänge codiert werden. feste Wortlänge 32 Bit UTF-32 Beispiele, hex 0000 00DF ß 0000 0040 @ (ASCII = 40) 0000 0041 A (ASCII = 41) 0000 00e0 bis 0000 00e6 à á â ã ä å æ variable Wortlänge UTF-16 : ein oder zwei 16-Bit-Worte Java Darstellung von 17 mal (256-17) mal 256 Zeichen UTF-8 : 1 bis 4 Bytes Internet, Betriebssysteme Darstellung aller Zeichen (max. 2 32 )

Basic Plane: hex 0000 0000 bis 0000 FFFF 0-27 insgesamt 2 16 Codierungen. 256 Codebereiche à 256

UTF-8 0-28 1-4 Bytes Möglichkeiten 0xxxxxxx Startbyte, 0 Folgebyte 128 xxxxxxx=ascii 7-Bit 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Startbyte, 1 Folgebyte Folgebyte Startbyte, 2 Folgebytes 1. Folgebyte 2. Folgebyte Startbyte, 3 Folgebytes 1. Folgebyte 2. Folgebyte 3. Folgebyte 1920 63.488 1.048.576

Beispiele UTF-8 und UTF-16 0-29 Zeichen Unicode Unicode binär UTF-8 binär UTF-8 hex UTF-16 hex y U+0079 00000000 01111001 01111001 79 ä U+00E4 00000000 11100100 11000011 10100100 C3 A4 00e4 JAVA "\u00e4" U+20AC 00100000 10101100 11100010 10000010 10101100 E2 82 AC 20ac JAVA: "\u20ac" Violinschlüssel U+1D11E 00000001 11010001 00011110 11110000 10011101 10000100 10011110 F0 9D 84 9E d834dd1e "\ud834\udd1e"

Beispiel: Textzeile 0-30 yä <CR><LF> Textzeile 79 c3 a4 e2 82 ac e2 88 9e 0d 0a UTF-8 0079 00e4 20ac 22e1 000d 000a UTF-16 00000079 000000E4 000020AC 0000221E 0000000d 0000000a Unicode

0.4 Codesicherung 0-31 Störung von Daten bei der Übertragung oder Speicherung Signal Kanal Signal Störung Fehlererkennung, ggf. auch Fehlerkorrektur durch Hinzufügen von Redundanz Sender fügt der Nutzinformation (n Bits) die Prüfinformation (p Bits) hinzu Signal Codierer Kanal Decodierer Signal Störung Fehleranzeige

Fehlererkennende Codes 0-32 (Quersicherung) Paritätsbit ergänzt das Codewort auf eine gerade (even parity) oder ungerade Anzahl (odd parity) von Gesamt-Bits. Empfänger prüft, ob das Paritätsbit zu dem Code passt ja: Zeichen korrekt empfangen, falls nur 1-Bit-Fehler möglich sind. nein: Zeichen falsch empfangen (Der Sender kann aufgefordert werden, die Übertragung zu wiederholen) ASCII Zeichen Hex Code Code parity bit (even) parity bit (odd) O 4F 1001111 1 0 0 30 0110000 0 1

gerade Länsparität Techn. Grundlagen der Informatik 2, SS 09, R. Hoffmann, TUD Kreuzsicherung 0-33 Zeilen- und spaltenweise, (blockweise, Rechtecksicherung) 1-Bit-Fehler sind lokalisierbar und korrigierbar Mehrbit-Fehler sind teilweise erkennbar. (Nicht erkennbar sind z. B. sog. 4-Bit-Rechteckfehler) gerade Querparität StartOfText STX o o o o o 1 o 1 O 1 o o 1 1 1 1 1 K 1 o o 1 o 1 1 o? o 1 1 0 1 1 1 1 o EndOfText BlockCheck Character ETX o o o o o 1 1 o BCC o 1 1 1 o 1 o o Empfänger stellt fehlerhaftes Bit fest

Sie ist definiert als die minimale Anzahl unterschiedlicher Bits aller Paare verschiedener Codewörter Im folgenden durch einen 3 Bit Code veranschaulicht. h = 1: Hamming Distanz h=1 Die Codewörter sind darstellbar als die Eckpunkte (sämtliche!) eines Würfels (allgemein: Hyperwürfel). Sie sind als ''gültige Codewörter ausgefüllt markiert. Eine Erhöhung der Hammingdistanz ermöglicht eine Fehlererkennung und ggf. eine Fehlerkorrektur. Richard Wesley Hamming (1915-1998) war ein US-amerikanischer Mathematiker 100 000 110 010 001 101 111 011 p= h-1 = 0 ungültige Codewörter liegen zwischen zwei gültigen 0-34

Hamming Distanz h=2 0-35 Zwischen je zwei gültigen Codewörtern liegt immer ein (p=h-1=1) ungültiges Codewort 1-Bit-Fehlererkennung Darstellung entspricht gerader Parität Hamming: ''Es ist selten ratsam, nur eine 1 Bit Fehlerkorrektur anzuwenden, da ein 2 Bit Fehler das System fehlleitet, wenn dieses eine Korrektur versucht. 100 000 110 111 101 010 011 001

Hamming Distanz h=3 0-36 Zwischen je zwei gültigen Codewörtern liegen immer p=h-1=2 ungültige Codewörter 1-Bit-Fehlerkorrektur oder 2-Bit Fehlererkennung 100 110 010 111 011 000 001

Hamming Distanz h=4 0-37 erlaubt entweder SEC : Single Error Correction (1-Bit-Fehlerkorrektur) und DED: Double Error Detection (2-Bit-Fehlererkennung) z.b. Speichermodule mit SECDED oder 64-Bit Daten + 7 SEC-Prüfbits + 1 DED-Prüfbit 3-Bit-Fehlererkennung Weiteres gebräuchliches Verfahren Cyclic Redundancy Check (CRC) Exor-Division des Datenstroms durch Generatorpolynom ergibt die Prüfinformation (s. Anhang)

0.5 Kompression 0-38 Ziele Einsparung von Speicherplatz Reduzierung der zu übertragenden Bits Übertragung geht schneller (bei beschränkter Übertragungsbandbreite) Übertragung ist billiger (erlaubt geringere Übertragungsbandbreiten) Sender komprimiert die Daten Empfänger dekomprimiert die Daten oder verarbeitet sie gleich in der komprimierten Form Grundprinzip: Entfernung überflüssiger (redundanter) Information, erkennbar z.b. durch Lange Folge gleicher Symbole ( Run-Length Encoding) Symbole in einem bestimmten Abstand sind gleich oder ähnlich Häufigkeit der Symbole schwankt ( Huffmann Encoding) Gzip benötigt durchschnittlich nur 2,7 Bits / Zeichen: Ausnutzen zusätzlicher Information, z.b. Häufigkeit für Paare von Zeichen, häufige Worte codieren etc.

Run-Length Encoding 0-39 Ein Folge von n identischen Symbolen s wird durch s(n) codiert. Beispiel: D = c a a a a a a f e e e e e e e D RL = c(1)a(6)f(1)e(7) Wenn jedes Zeichen durch 7-Bit-ASCII codiert wird, dann werden für bit(d) =15*7 bit und für bit(d RL )= 8*7 bit benötigt. Die Funktion bit() gibt die Anzahl der Bits an, die zur Codierung benutzt wurden und sie ist auch ein Maß für die maximal übertragbare Informationsmenge (Entscheidungsgehalt). Als Einheit für Informationsmenge und Redundanz wird bit benutzt.

Informationstheorie 0-40 Begründet 1948 von dem amerikan. Mathematiker Clause Elwood Shannon (1916-2001) Die I. untersucht die mathematischen Zusammenhänge der in einer Nachricht enthaltenen Information. Grundideen Die Zeichen in einer Nachricht treten mit einer bestimmten Wahrscheinlichkeit (Häufigkeit) auf. Der Informationsgehalt eines Zeichens ist hoch, wenn seine Häufigkeit gering ist. Die Information ist umso größer, desto überraschender das Zeichen kommt. Wenn die Wahrscheinlichkeit für das Auftreten des Zeichens 100% ist, dann ist der Informationsgehalt gleich Null.

Redundanz 0-41 Redundanz, vereinfacht erklärt: die Informationsmenge, die entfernt werden kann, ohne dass der eigentlich übertragene Inhalt (die reine (die neue) Information) ganz oder teilweise verloren geht. R = bit(d)-bit(d RL ), als Beispiel für die Run-Length-Codierung Die relative Redundanz R rel beträgt R rel = R/bit(D) In unserem Beispiel beträgt die (entfernte) Redundanz R = 49 bit und die relative Redundanz R rel R rel = 15-8/15 = 46.7 %

Code variabler Länge 0-42 Problem: Finde für Alphabet mit n Zeichen einen Binärcode, der die Gesamtlänge eines Textes (über diesem Alphabet) minimiert. Code fester Länge: log 2 n Bits pro Zeichen ist gut für die wortparallele Verarbeitung aber: manche Codes kommen gar nicht oder sehr selten vor Ansatz: Verwende einen Code variabler Länge kurze Codewörter für häufige Zeichen lange für seltene Eine eindeutige Decodierung ist möglich, wenn es kein Codewort gibt, das Beginn (Präfix) eines anderen Codewortes ist (Präfixcode) Beispiel: e 0, t 10, x 11 text 1001110 Allgemeine Lösung Shannon-Fano-Code Huffmann Code

Beispiel: Code fester und variabler Länge 0-43 Zeichen Häufigkeit p 2-Bit- Code x Code y mit variabler Länge a 0,5 00 0 b 0,25 01 10 c 0,125 10 110 d 0,125 11 111 Gegeben sei ein Text T mit 100 Zeichen der gegebenen Häufigkeit. Wieviel Redundanz kann durch einen Code variabler Länge entfernt werden? bit(t x ) =100*2=200 bit bit(t y ) =50*1 + 25*2 + 12, 5*3 + 12,5*3 = 175 bit entfernt wurde: R = 200 175 = 25 bit R rel = 25/200 = 12,5%

0.6 Erkennung: Entscheidungsbaum 0-44 Jede Binärcodierung kann als binärer Entscheidungsbaum dargestellt werden 0 1 0 1 a 0 1 0 1 0 1 b 0 1 a b c d c d Ausgehend vom Wurzelknoten wird mit dem Erreichen eines Blattes ein Zeichen mit einer bestimmten Binärcodierung erkannt.

0.7 Vertiefung 0-45 5-Bit-Fernschreibcode Nr. 2 8-Bit-Code der Zuse Rechenmaschine Z1 8-Bit-EBCDIC Berechnung von UTF-16 Zyklische Blockprüfung (Cyclic Redundancy Check) Logiksymbole

Fernschreibcode Nr. 2 0-46 Zur Codierung von Fernschreiben in der Telegraphie, in den Anfängen von Rechnersystemen auch für die Speicherung von Code auf Lochstreifen 1880 erfunden von Baudot Fernschreibcode Nr. 1 (CCITT- Code Nr. 1), wurde von Murray modifiziert Fernschreibcode Nr. 2 CCITT: Comité Cunsultativ International Telegraphique et Telephonique (internationaler Normungsausschuß) Durch 5 Bits lassen sich nur 32 Zeichen codieren, deshalb wurde eine Doppelbelegung (Multi- Case-Coding) vorgenommen: durch Einschaltung des Buchstabenmodus (Steuerzeichen LS=letter shift) oder Ziffernmodus (FS=figure shift) Bemerkung: nach Baudot wird auch die Einheit Baud benannt: 1 Baud ist der Kehrwert der Zeit zur Übertragung eines Symbols (hier ein Bit), auch Schrittgeschwindigkeit genannt, z.b. 1 Bit/20 ms = 50 Baud

Fernschreibcode Nr. 2 0-47 Code-Nr. Binärcode Buchstabe Ziffer 1 11000 A - 2 10011 B? 3 01110 C : 4 10010 D WAY 5 10000 E 3 6 10110 F (NA) 7 01011 G (NA) 8 00101 H (NA) 9 01100 I 8 10 11010 J bell 11 11110 K ( 12 01001 L ) 13 00111 M. 14 00110 N, 15 00011 O 9 16 01101 P 0 Code-Nr. Binärcode Buchstabe Ziffer 17 11101 Q 1 18 01010 R 4 19 10100 S ' 20 00001 T 5 21 11100 U 7 22 01111 V = 23 11001 W 2 24 10111 X / 25 10101 Y 6 26 10001 Z + 27 00010 CR (Carriage Return) 28 01000 LF (Line Feed) 29 11111 LS (Letter Shift) 30 11011 FS (Figure Shift) 31 00100 space 32 00000 (unused)

Kontrollzeichen 0-48 WAY Wer Da? (Who are you?) bell CR LF LS FS space (NA) Klingel Wagenrücklauf (carriage return) Zeilenvorschub (line feed) Buchstabenumschaltung (letter shift) Ziffernumschaltung (figure shift) Zwischenraum nicht definiert, reserviert (not assigned)

8-Bit-Code der Zuse Rechenmaschine Z1 0-49 1938 Z1: erster mechanischer Rechner von Zuse Zur Speicherung des Programms wurde ein Lochstreifen (alte Filmrollen) benutzt

8-Bit-EBCDIC 0-50 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 NUL PF HT LC DEL 1 RES NL BS IL 2 BYP LF EOB PRE SM 3 PN RS UC EOT 4 SP. < ( + 5 &! $ * ) ; 6 / ^, % >? 7 : # @ = 8 a b c d e f g h i 9 j k l m n o p q r A s t u v w x y z B C A B C D E F G H I D J K L M N O P Q R E S T U V W X Y Z F 0 1 2 3 4 5 6 7 8 9 Eine weitere Definition zur Darstellung von Zeichen ist der EBCDIC-Standard (Extended Binary Coded Decimal Interchange Code). Hier handelt es sich um einen 8 Bit Code, der von IBM favorisiert wurde und sich dementsprechend als Standard für Großrechner durchgesetzt hat. EBCDIC (Extended Binary Coded Decimal Interchange Code). Leseweise: z. B. F3 h = 3

Berechnung von UTF-16 0-51 All possible code points from U+0000 through U+10FFFF, except for the surrogate code points U+D800 to U+DFFF (which are not characters), are uniquely mapped by UTF-16 to 16 or 32 bit Zeichen innerhalb der Basic Plane (code points <2 16 ) werden durch ein 16-Bit-Wort codiert, z.b. UTF16(ä) = 00e4 hex Zeichen außerhalb (code points 2 16, U+010000 bis U+10FFFF, planes 1-16) werden durch zwei 16-Bit-Wörter codiert (surrogate pair) Decodierung Wenn die führenden 5 Bits ungleich 11011 sind, dann wird nur ein 16-Bit Wort decodiert (Basic Plane) Wenn die führenden 6 Bits gleich 1101 10 sind, dann handelt es sich um das high surrogate, wenn die führenden 6 Bits gleich 1101 11 sind, dann handelt es sich um das low surrogate

Beispiel Unicode UTF-16 0-52 Unicode 0001 D11E hex = 00000000 00000001 11010001 00011110-0001 0000 abziehen = 00000000 00000000 11010001 00011110 10 bit 10 bit aufsplitten hinzufügen 1101 1000 0011 0100 1101 1101 0001 1110 d834 high surrogate dd1e low surrogate

inifity Encodings HTML Entity (decimal) HTML Entity (hex) HTML Entity (named) How to type in Microsoft Windows UTF-8 (hex) UTF-8 (binary) UTF-16 (hex) Alt +221E Alt 236 0xE2 0x88 0x9E (e2889e) 11100010:10001000:10011 110 0x221E (221e) UTF-16 (decimal) 8.734 UTF-32 (hex) http://www.fileformat.info/info/unicode/font/code2001/index.htm 0x0000221E (221e) UTF-32 (decimal) 8.734 C/C++/Java source code "\u221e" 0-53

0-54 http://www.fileformat.info/info/unicode/font/code2001/index.htm Encodings HTML Entity (decimal) HTML Entity (hex) How to type in Microsoft Windows UTF-8 (hex) UTF-8 (binary) Alt +1D11E 0xF0 0x9D 0x84 0x9E (f09d849e) 11110000:10011101:100001 00:10011110 UTF-16 (hex) 0xD834 0xDD1E (d834dd1e) UTF-16 (decimal) 55.348 56.606 UTF-32 (hex) 0x0001D11E (1d11e) UTF-32 (decimal) 119.070 C/C++/Java source code "\ud834\udd1e"

Zyklische Blockprüfung (Cyclic Redundancy Check) 0-55 Datensicherung bei seriellen Bitströmen durch Polynom Codes CRC Codes CRC-Codes sind zyklische Codes, d.h. jede zyklische Vertauschung ist wieder ein Codewort Beispiel für ein Verfahren mit 4 Bit CRC Code: Die n Bits eines Datenstroms werden als Koeffizienten eines Polynoms D(x) der Ordnung n-1 betrachtet, z.b.: Bitfolge 11001 Polynom x 4 + x 3 + 1. An D(x) werden k=3 Nullen angefügt (Grad von G(x)) D(x),000 = D(x)*x 3 D(x)* x 3 wird auf der Senderseite im Codierer durch ein sog. Generatorpolynom, hier G(x) = x 3 + x 2 + 1, dividiert, wobei ein Restpolynom k-1=2. Ordnung R(x) als Prüfinformation entsteht. Die für die Division erforderliche Subtraktion wird als Modulo 2 Subtraktion ausgeführt, entspricht der EXOR-Funktion. R(x) wird an D(x) angefügt. Ein Decodierer auf der Empfängerseite dividiert D(x),R(x) durch G(x) und erwartet bei fehlerfreier Übertragung den Rest Null.

Beispiel, CRC-Codierung und Decodierung 0-56 Codierer berechnet die Prüfbits (Rest der Division) R(x)=Rest(D(x) : G(x)) CRC 11001 010 Decodierer prüft durch Division, ob der Rest gleich Null Rest( (D(x),R(x)) :G(x) ) =0? D(x) : G(x) 11001000 : 1101-1101 0001100 = x 4 +x 3-1101 00010 = x = R(x) D(x),R(x) : G(x) 11001010 : 1101-1101 0001101-1101 00000 = R(x) kein Fehler Die Operationen werden in der Modulo-2-Arithmetik durchgeführt. Addition und Subtraktion entsprechen dem bitweisen XOR, ohne Überträge. Innerhalb des Divisionsverfahrens wird nur subtrahiert, wenn dies möglich ist (die beiden MSB sind dann 1).

Logik-Implementierung 0-57 G(x) = 1 0 1 1 ^ : exor d = 000-10011 Input, MSB zuerst a b c Takt d d^c a b b^c c 1. 1 1 0 0 0 0 2. 1 1 1 0 0 0 3. 0 0 1 1 1 0 4. 0 1 0 1 0 1 5. 1 1 1 0 0 0 6. 0 0 1 1 1 0 7. 0 1 0 1 0 1 8. 0 0 1 0 0 0 9. 0 1 0 R(x) Einsetzen der zeitlichen Zwischenergebnisse ergibt die logischen Gleichungen a=d0^d1^d2^d4 b=d1^d2^d3 c=d0^d1^d2^d3

Logik-Symbole (Wdh.) 0-58 DIN IEEE oft verwendete Operatorzeichen x&y, x.y x+y, x y, x v y x^y, x y, x#y ~x,!x Inverter

Logik-Symbole (2) 0-59 Alternative Darstellungen für Multiplexer 0 1 0 1