Rechnergrundlagen

Werbung
Rechnergrundlagen Teil 1
-1-
Prof.Dipl.-Ing. Komar
Rechnergrundlagen
Inhaltsverzeichnis
1
Teil 1
Einführung und Überblick
Das Werden der Informatik - Rechnergenerationen
Einteilung der Informatik - Themen der Informatik
2
3
Grundbegriffe : Information – Nachricht – Signal – Zeichen – Code – Digitalisieren – A/D-Wandlung
Grundlagen der lnformations-Theorie
Elementarvorrat E, Informationsgehalt h, Entropie H, mittl. Wortlänge L, Redundanz R
4
Codierung
Quell- und Kanalcodierung - Optimal-Codes, (Huffmann, FANO),
Codesicherungsverfahren ( m-aus n- Code, Blocksicherung, Hamming-Code)
5
Zahlensysteme
Polyadisches Bildungsgesetz für Zahlen Dual – Dezimal – Hexadezimal
Umwandlung von Dezimalzahlen in Dual - / Hexadezimal-Zahlen mittels Horner-Schema
Arithmetik im Dualsystem
Darstellung negativer Zahlen – Einerkomplement – Zweierkomplement
Zahlendarstellung im Rechner - Festkomma – Gleitkomma – BCD-Darstellung
6
Teil 2
Funktionsweise digitaler Rechenanlagen
Funktionseinheiten eines Computers: CPU, Bus, I/O-Peripherie, Speicher, Programme
Aufbau eines Mikroprozessors – Bauformen und Einsatz von Mikrocomputern
Personalcomputer und INTEL 80x86-Prozessoren
Der PC als Mikrocomputer -Versuchs- und Übungssystem
7
Maschinenorientierte Programmierung
Programmiermodell des 8086 - Maschinenbefehle des 8086
Assemblerprogrammierung mit DEBUG und EDIT
DEBUG – Monitor
BIOS- und DOS- Funktionen des Betriebssystems
Asynchrone, serielle Datenübertragung nach RS232C/V24
Terminalemulation
Anhang: Gleitkommarechnung mit der Floating-Point-Unit FPU
Literatur
[ 1 ] Blieberger, Klasek,
Redlein, Schildt
Informatik
Springers Lehrbücher der Informatik
Springer Verlag Wien NewYork
[ 2 ] Rechenberg, Pomberger
Informatik-Handbuch
Carl Hanser Verlag München Wien
[ 3 ] P. Rechenberg
Was ist Informatik ?
Eine allgemeinverständliche Einführung
Carl Hanser Verlag München Wien
[ 4 ]G. Küveler, D. Schwoch
Informatik für Ingenieure
Vieweg
[ 5 ] Otto Mildenberger
Informationstechnik kompakt
Vieweg
Rechnergrundlagen Teil 1
-2-
Prof.Dipl.-Ing. Komar
1. Einführung und Überblick
Informatik (Computer Science)
ist die Wissenschaft von der systematischen Verarbeitung von Informationen – insbesondere deren
automatische Verarbeitung mit Hilfe von Digitalrechnern.
Symbolisch: Informatik = Information + Automatik
( auch + Mathematik )
Die Informatik ist auf das engste mit dem Computer ( Rechner, Datenverarbeitungsanlage) verknüpft.
Der Computer als elektronische Rechenmaschine entstand in den vierziger Jahren und begründete die
Informatik. Seine Vorläufer waren die elektromechanischen Rechenmaschinen und die Lochkartentechnik.
Der Computer (vom lateinischen „ computare“ -> computus entspricht Kirchenrechnung/Kalenderrechnung)
ist eine universelle, elektronische digitale Rechenanlage zur Lösung von Problemen, die zuvor als
Algorithmen formuliert wurden.
In früheren Zeiten wurde immer wieder versucht, mechanische Rechenmaschinen für die vier Grundrechenarten
zu konstruieren. Diese Konstruktionsversuche hatten ihre Ursache darin, daß es sich bei den Grundrechenarten
um mechanisch ausführbare Rechenverfahren handelt. („mechanisch“ bedeutet hier „ohne Nachdenken“ –
„ohne Verstehen“ ).
Dieser Begriff des mechanisch ausführbaren Rechenverfahrens wird als Algorithmus bezeichnet.
Algorithmen sind beschreibbare und Schritt für Schritt nachvollziehbare Verfahren zur Lösung vorgegebener
Probleme. Sie bestehen aus mehreren nacheinander auszuführenden Schritten, die solange nacheinander
ausgeführt bzw wiederholt durchlaufen werden, bis ein Ergebnis gefunden ist (endliche Lösungsverfahren ).
Erst das Werkzeug „Computer“ erlaubte, Algorithmen mit Millionen von Schritten auszuführen.
Mechanischen Rechenmaschinen waren noch keine Computer, denn sie konnten zwar die Algorithmen für die
vier Grundrechenarten ausführen, aber eben keine anderen.
Diese Eigenschaft des Computers, die verschiedensten und komplexesten Algorithmen auszuführen, wird durch
seine freie Programmierbarkeit ermöglicht und machte den Computer zu einem universalen Instrument.
Freie Programmierbarkeit heißt, der Computer hat einen Programmspeicher, in dem man beliebige
Programme speichern kann, die der Computer dann ausführt.
Ein Programm ist demnach ein mit Hilfe eindeutiger Regeln formulierter Algorithmus, der in dieser Form von
einem bestimmten Rechner übernommen und ausgeführt werden kann ( im Computer gespeichert und vom
Computer ausgeführt werden kann ).
Drei Eigenschaften unterscheiden den heutigen Computer von seinen Vorläufern und begründen seinen Erfolg:
-
die hochintegrierte Elektronik anstelle der Mechanik oder Elektromechanik
-
die Benutzung von zweiwertigen (binären) Zuständen anstelle von zehnwertigen
das gespeicherte Programm (v. Neumann-Rechner mit Daten und Programm im gemeinsamen
Arbeitsspeicher)
Die Informatik gründet auf Daten und Algorithmen
das sind die Dinge die verarbeitet werden
Daten,
Algorithmen, das sind die Handlungen (Verfahrensschritte), die verarbeiten.
-
Heutzutage werden mit dem Computer längst nicht mehr nur Zahlen verarbeitet, sondern alles was zähl- und
meßbar ist wie Zahlen, Texte, Sprache, Musik, Bilder und viele andere physikalische Größen mit ihren
zeitlichen Verläufen werden von Computern verarbeitet.
Um diese vielfältigen Informationen verarbeiten zu können, müssen diese zuerst in eine für den Computer
gemäße Form umgewandelt werden, nämlich in digitale, binärcodierte Daten ( Digitalisierung ).
Zusammengefaßt:
.
.
.
Alles was zähl- und meßbar ist, kann codiert werden
Alles was codiert werden kann, kann ein Computer verarbeiten
Die Codierung im Computer ist immer binär, d.h. geschieht mit den Werten 0 und 1
Rechnergrundlagen Teil 1
-3-
Prof.Dipl.-Ing. Komar
1.1 Das Werden der Informatik
1700 v. Chr. Papyrus Rhind, Ägypten, älteste schriftliche Rechenaufgaben.
300 v.Chr.
Euklidischer Algorithmus ( größter gemeinsamer Teiler zweier natürlichen Zahlen )
5. Jh. n.Chr. Erfindung des Dezimalsystems in Indien.
820 n.Chr.
Al-Chowarizmi (etwa 780 - 850), persischer Mathematiker und Astronom, schreibt ein Buch
über Algebra. (von ihm leitet sich der Begriff Algorithmus ab )
1202
Leonardo von Pisa, genannt Fibonacci (etwa 1180 - 1240), italienischer Mathematiker, verfaßt
den liber abaci, die erste systematische Einführung in das dezimale Zahlenrechnen.
1524
Adam Riese (1492 - 1559) veröffentlicht ein Rechenbuch, in dem er die Rechengesetze des
Dezimalsystems beschreibt. Seit dieser Zeit setzt sich das Dezimalsystem in Europa durch.
1623
Wilhelm Schickard (1592 - 1635) konstruiert eine Maschine, die die vier Grundrechenarten
ausführen kann. Sie bleibt unbeachtet.
1641
Blaise Pascal (1623 - 1662) konstruiert eine Maschine, die sechsstellige Zahlen addiert.
1674
G. W. Leibniz (1646 - 1716) konstruiert eine Rechenmaschine mit Staffelwalzen für die vier
Grundrechenarten. Er befaßt sich auch mit dem dualen Zahlensystem.
1774
P. M. Hahn (1739 - 1790) entwickelt erste zuverlässige mechanische Rechenmaschine.
Ab 1818
Rechenmaschinen nach dem Vorbild der Leibnizschen Maschine werden serienmäßig
hergestellt und dabei ständig weiterentwickelt.
1805
Joseph-Marie Jaquard Ablauf-Steuerung von Webstühle mit Lochplatten aus Holz
1822
Charles Babbage (1791 - 1871) plant seine Analytical Engine, mit 3 wesentlichen Baugruppen: Speicher-, Rechen- und Leitwerk, Steuerung des Progammablaufes durch Lochkarten
1886
Hermann Hollerith (1860 - 1929) erfindet die Lochkarte. Lochkartenmaschine zum Abtasten
von Lochkarten und Auslösen elektrischer Schrittschaltwerke für die Volkszählung 1890 in
USA. Heute noch verwendete Lochkarte mit 80 Spalten und 12 Zeilen.
Mechanische Rechenwerke
1934
1941
1944
(der Algorithmus für die Grundrechenarten fest eingebaut )
Konrad Zuse (geb. 1910) beginnt mit der Planung einer programmgesteuerten
Rechenmaschine Z1 . Duales Zahlensystem und Gleitkomma-Zahlendarstellung ,
Relaisrechner mit fest eingebauter Steuerung („festverdrahtetes Programm )
Die elektromechanische Anlage Z3 von Zuse ist fertig. Erster funktionsfähiger programmgesteuerte Rechenautomat, Programmeingabe über gelochte Filmstreifen (extern, gesteuerter
Programmablauf), Unterprogramme in Form von Lochstreifenschleifen realisiert, 3000 Relais
H. H. Aiken (1900 - 1973) erbaut Mark 1. Additionszeit 1/3 sec, Multiplikationszeit 6 sec.
Zusammenschaltung von Lochkartenmaschinen ( Mark I ) ohne externe Programmsteuerung
Länge 16m, Gewicht 35t, Weiterentwicklungen zu Relaisrechner (Mark II), Dezimalsystem
Elektromechanische Rechenwerke, benutzen langsame äußere Speicher (Lochkarten, Lochstreifen)
(verschiedene Algorithmen durch äußeren Programmspeicher verarbeitbar )
Rechnergrundlagen Teil 1
1946
-4-
Prof.Dipl.-Ing. Komar
J. P. Eckert und J. W. Mauchly erbauen ENIAC (Electronic Numerical Integrator and
Calculator). Erster voll elektronische Rechner (18000 Elektronenröhren, Gewicht 30t,
Leistungsaufnahme 175 kW). Multiplikationszeit 3 ms, Programmsteuerung durch Stecktafeln
John von Neumann schlägt das im Rechner gespeicherte Programm vor, eine sogn.
„speicherprogrammierte Rechenanlage“
1949
M. V. Wilkes baut EDVAC. (Electronic Discrete Variable Automatic Calculator )
Erster universeller Digitalrechner mit binärer Codierung und einheitlichem internen
Programm und Datenspeicher (erster „von Neumann Rechner “ )
Ab 1950 Industrielle Rechnerproduktion.
Die weitere Entwicklung wird in Rechner-Generationen anhand der Technologie der
elektronischen Schalter ( Röhre, Transistor, integrierte Schaltkreise, hochintegrierte
Schaltkreise, usw. ) dargestellt.
Generation
Charakterisierung
1
Bis Ende der fünfziger Jahre. Elektronenröhren als Schaltelemente; zentrale Speicher von
wenigen hundert Maschinenwörtem, typ. Additionszeiten 100 - 1000µsec, Speicherkapazität
<100 Zahlen, Programmiert wurde umständlich mit Zahlenkolonnen, keine Software vorhanden
2
Bis Ende der sechziger Jahre. Transistorschaltkreise; Ferritkern-, Band-, Trommel-,
Plattenspeicher, typ. Additionszeiten 1 – 10 µsec, Speicherkapazität einige 1000 Zahlen,
Assemblerprogrammierung, maschinenunabhängige Programmiersprachen wie Fortran und
Cobol, erste Betriebssysteme für bessere Ausnutzung
3
Seit Mitte der sechziger Jahre. Teilweise integrierte Schaltkreise, Rechnerfamilien wie IBM 360
UNIVAC 9000, Siemens 4004 in Stufen ausbaubar und damit fertige Programme weiterverwendbar (Kompatibilität), Timesharing (Multiuser-Betrieb) , mit Bildschirmen beginnt die graphische
Datenverarbeitung , Lochkartenstapel-Arbeitsweise
4
Seit Anfang der siebziger Jahre. Überwiegend hochintegrierte Schaltkreise; Mikroprozessor =
Rechnerkern CPU auf einem Chip; 8-Bit-Architektur, der Mikrocomputer führt mit Home- und
Personal-Computer PC zu einer drastischen Dezentralisierung und eröffnet neue Dimensionen in
der Mensch-Maschine-Kommunikation, Betriebssysteme CP/M, MS-DOS und UNIX
5
Seit Anfang der achtziger Jahre. Hochintegrierte Schaltkreise; Mikrocomputer auf einem Chip,
mehrere Prozessoren auf einem Chip; 16- und 32-Bit-Architekturen; Mikrocomputer-Netzwerke,
lokale und globale Netze, Neuronale Netze und parallele Multiprozessorsysteme, Multimedia
Abkehr von der vorherrschenden von-Neumann-Architektur
Elektronische Rechenanlagen
( Algorithmen im inneren Programmspeicher )
Rechnergrundlagen Teil 1
1.2 Einteilung der
-5-
Prof.Dipl.-Ing. Komar
Informatik
Technische
Informatik
Hardwarekomponenten
Schaltnetze
Schaltwerke
Prozessoren
Praktische
Informatik
Algorithmen
Datenstrukturen
Programmiermethoden
Programmiersprachen
und Compiler
Mikroprogrammierung
Theoretische
Informatik
Automatentheorie
Theorie der
Formalen Sprachen
Angewandte
Informatik
Informationssysteme
Computergrafik
Künstliche Intelligenz
Theorie der
Berechenbarkeit
Digitale Signalverarbeitung
Betriebssyteme
Rechnerorganisation
und –architektur
Softwaretechnik
Komplexitätstheorie
Schnittstellentechnik
und Rechnernetze
Mensch-MaschineKommunikation
Simulation und
Modellierung
Algorithmenanalyse
Textverarbeitung
und Büro-Automation
Theorie der
Programmierung
Automatische
Programmsynthese
Formale
Semantik
Spezifische Anwendungen
Wirtschaft
Verwaltung
Ingenieurwissenschaften
Naturwissenschaften
Medizin
Kunst
Theoretische Informatik befaßt sich mit Grundlagenfragen und abstrahiert dabei von den technischen
Gegebenheiten realer Computer.
Sie bedient sich in starkem Maße mathematischer Begriffe und Methoden
Technische Informatik behandelt die Bestandtteile, den Aufbau und die Zusammenarbeit von Computern,
also die Hardware ( Schaltkreise, Schaltnetze, Schaltwerke )
Praktische Informatik behandelt Algorithmen, Datenstrukturen, Programmiersprachen und Programmierungstechniken, Betriebssysteme, Compilerbau , Softwaretechnik (Kern der Informatik )
Angewandte Informatik hat ebenfalls die Programmierung im Mittelpunkt.
Der Computer wird hier dagegen als Werkzeug zur Lösung von Aufgaben eingesetzt,
die außerhalb der eigenen Weiterentwicklung liegen, also für Anwendungen in allen
anderen Bereichen.
Das Arbeitsgebiet der Informatik kann man letztlich auch als eine Ingenieursdisziplin betrachten.
Rechnergrundlagen Teil 1
1.3
Theoretische
Grundlagen
Boolsche Algebra
-6-
Prof.Dipl.-Ing. Komar
Themen der Informatik
Einführung
Informationstheorie
Algorithmen
Codierungstheorie
Zahlendarstellung
Optimale
Codierung
Logische
Schaltungen
Mikroprocessor
Hardware
Computersysteme
Betriebssysteme
Assemblersprachen
Betriebssysteme und
Systemsoftware
Höhere Sprachen
Rechnergrundlagen Teil 1
-7-
Prof.Dipl.-Ing. Komar
2. Grundbegriffe: Information, Nachricht, Codierung, Digitalisierung
Information ist neben Energie und Materie der dritte fundamentale Begriff in Wissenschaft und Technik
Information ist aber ein sehr vielschichtiger Begriff, der mathematisch nicht fassbar ist.
Information: Der Begriff Information ist formal nicht definiert und eigentlich subjektiv.
Eine Information ist die Bedeutung, die durch eine Nachricht übermittelt
wird, und ist abhängig von vorhergegangenen Vereinbarungen.
Information ist Gewinn an Wissen bzw beseitigt Ungewissheit oder Information ist beseitigte Unsicherheit
Information wird durch eine Zuordnung ( Interpretation ) aus der Nachricht extrahiert und ist damit der
semantische Gehalt einer Nachricht
Die abstrakte Information wird durch die konkrete Nachricht mitgeteilt, d.h. die Information wird über eine
Interpretationsvorschrift (Abbildungsvorschrift) aus der Nachricht abstrahiert bzw aus ihr herausgelesen.
Bei gegebener Information kann es verschiedene Nachrichten geben, welche diese Information wiedergeben,
z.B. kann die gleiche Information durch Nachrichten in verschiedenen Sprachen übermittelt werden.
In der Kryptologie soll niemand Unbefugtes (ohne Schlüssel) der Nachricht die Information entnehmen können.
Andererseits ist die Information einer Nachricht, bzw. deren Interpretation nicht unbedingt eindeutig
z.B. die Bedeutung des Wortes "Erblasser"
- Person die vererbt
oder - Person die erbleicht
Information kann man - mitteilen
oder
- aufbewahren oder
- verändern
oder
übertragen
speichern
verarbeiten
(über räumliche Distanz transportieren)
(über zeitliche Distanz transportieren )
Erhalten u. Übertragen von Information ist an Erhalten u. Übertragen von Nachrichten gebunden und dies
an die Übermittlung von Signalen oder Zeichen
Nachricht: Gebilde aus Zeichen oder kontinuierlichen Funktionen , die aufgrund
bekannter oder unterstellter Abmachung Informationen darstellen und die
vorrangig zum Zweck der Weitergabe als zusammengehörig angesehen und
deshalb als Einheit betrachtet werden. (DIN 44300 Teil 2)
Als Sonderfall wird der Begriff Daten aufgefaßt, der sich nur durch die Zweckbestimmung von der Nachricht
unterscheidet ( Informatik arbeitet mit Daten )
Daten (Datum /Datenelement) : Gebilde aus Zeichen oder kontinuierlichen Funktionen,
die aufgrund bekannter oder unterstellter Abmachung Information darstellen,
vorrangig zum Zweck der Verarbeitung oder als deren Ergebnis.
Weitere Definitionen:
Nachricht ist eine begrenzte Folge diskreter, einzelner Zeichen oder Zustände, die zur Übertragung von
Information dienen
Die Nachricht läßt sich als Folge von Zeichen auffassen, die von einem Sender (Quelle) ausgehend, in
irgendeiner Form einem Empfänger (Senke) übermittelt wird.
Während der Übermittlung ist auch immer die Möglichkeit eine Störung der Nachricht gegeben.
Nachricht ist eine räumliche oder zeitliche Anordnung von Signalen, die zwischen Sender und Empfänger
ausgetauscht werden.
Quelle
Übertragungsmedium
Senke
Störung
Sender
Nachrichtenkanal
Empfänger
Rechnergrundlagen Teil 1
-8-
Prof.Dipl.-Ing. Komar
Signale sind die Darstellung von Nachrichten oder Daten mit physikalischen
Mitteln, sie sind die Träger einer Nachricht.
Signale sind die systematische Veränderung von Parametern einer physikalischen Größe in Raum oder Zeit nach
vereinbarten Regeln.
Ein Signalparameter ist diejenige Kenngröße des Signals, deren Wert oder Werteverlauf die Nachricht oder die
Daten darstellt, z.B. die Amplitude einer amplitudenmodulierten Wechselspannung.
Beispiele für physikalische Größen als Träger von Nachrichten:
Physikalische Größe
Veränderbare Parameter
Spannung, Strom
Amplitude, Kurvenform ,Frequenz
Feldstärke
Betrag, Richtung
Reflexionsfähigkeit
Reflexionsfaktor
Durchlässigkeit
Transmissionsfaktor
Ein analoges Signal ist ein Signal, dessen Signalparameter analoge Nachrichten oder Daten kontinuierlich
abbildet (kontinuierliches Signal , stetiger Wertebereich).
Es hat unendlich viele Signalwerte innerhalb des nutzbaren Signalbereiches analog = > entsprechend
Darstellung einer Größe durch eine entsprechend andere z.B. Uhrzeit dargestellt durch den sehr anschaulichen
Winkel der Uhrzeiger .
Die Darstellung ist damit ein direktes Abbild der darzustellenden Größe
Ein digitales Signal ist ein Signal, dessen Signalparameter eine Nachricht oder Daten darstellt, die nur aus
Zeichen besteht bzw. bestehen (diskretes Signal). Bei einem digitalen Signal kann der Signalparameter nur
endlich viele Werte annehmen. ( griechisch digitus = Finger )
Die Darstellung ist damit eine symbolische Beschreibung der darzustellenden Größe.
Bei den in der Technik üblichen digitalen, binären Signalen sind es zwei Werte oder Wertebereiche
( 0 und 1, L und H oder true und false ).
Binäre Signale sind technisch besonders einfach und kostengünstig zu realisieren.
Wenn in der Technik allgemein von „digital“ gesprochen wird, ist immer digital binär gemeint.
Schnittstelle zwischen Elektrotechnik und Informatik:
In der Natur fast nur analoge Signale- (Ausnahme Quantenphysik)
In der Informatik die Verarbeitung digitaler, binärer Signale
Eine digitale Nachricht ist eine aus den Zeichen eines Alphabets gebildete Zeichenfolge, also z:B. dieser
schriftliche Text
Zeichen oder Symbol: Element aus einer endlichen Menge von Objekten ( Zeichenvorrat,
Alphabet), die zur Darstellung von Information vereinbart wurde.
Ein Zeichen ( Symbol) ist ein Element eines Codes und wird durch eine bestimmte Anzahl von Signalen
( Code-Elemente ) dargestellt.
Alphabet: Ein in vereinbarter Reihenfolge geordneter Zeichenvorrat
Für die Informatik von großem Interesse ist das kleinste Alphabet mit einem binären Zeichenvorrat , der nur aus
zwei Zeichen besteht, den Symbolen 0 und 1, auch Binärzeichen oder Bit ( binary digit = Binärziffer )
genannt.
( 0,1,2,3,4,5,6,7,8,9 ) Alphabet der Dezimalziffern
( a,b,c,....A,B,C,.... ) Alphabet der Buchstaben
( rot, gelb, grün
) Alphabet der Verkehrsampelsignale
Rechnergrundlagen Teil 1
-9-
Prof.Dipl.-Ing. Komar
Code ist eine Vorschrift für die eindeutige Zuordnung (Codierung) der Zeichen eines
Zeichenvorrates ( Urmenge, Quellalphabet ) zu denjenigen eines anderen Zeichenvorrates ( Bildmenge,
Zielalphabet ). Auch die Bildmenge einer solchen Abbildung wird als Code bezeichnet
Die Übersetzung aus der Urbildmenge in die Bildmenge heißt Codierung ( Verschlüsselung ), der umgekehrte
Vorgang Decodierung ( Entschlüsselung )
Ist das Zielalphabet einer Codierung ein binäres Alphabet, so spricht man von einem Binärcode.
Binärcodierung ist die Codierung irgendeines Alphabets durch Folgen von Binärzeichen und da alle
denkbaren Alphabete sich durch Folgen von Binärzeichen ausdrücken lassen, ist es möglich , im Computer nur
die Binärzeichen 0 und 1 zu benutzen und aus ihnen die ganze Vielfalt der zu verarbeitenden Daten
aufzubauen.
Codewort ist die aus der Codierung eines einzelnen Zeichens hervorgehende binäre Zeichenfolge.
Beispiele:
a) Die folgende Codetabelle zeigt eine von vielen Möglichkeiten, das Alphabet der zehn
Dezimalziffern durch Gruppen von vier Binärziffern (Codewörter) zu codieren:
Binär
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
Dezimal
0
1
2
3
4
5
6
7
8
9
b) Im 2-aus-5-Code wird die Dezimalziffer 4 eindeutig-umkehrbar durch die fünfstellige binäre
Zeichenfolge 01001 abgebildet.
Eine Zeichenfolge von 8 Binärziffern wird zusammengefaßt zu einem Byte: 1 Byte = 8 Bit
Größere Zahlen von Bits oder Bytes kürzt man mit folgenden Größenfaktoren ab:
Kilo
Mega
Giga
Tera
1K =
1M=
1 G=
1T =
210
220
230
240
= 1024
1 Kbit = 1024 Bit bzw 1Kbyte = 1024 Byte
= 1 048 576
1 Mbyte = 1 048 576 Byte
= 1 073 741 824
= 1 099 511 627 776
Die binärcodierte Darstellung von Daten hat folgende Vorteile:
Genauigkeit. Die digitale Darstellung kann durch Hinzufügen weiterer Binärziffern (Bits) beliebig genau
gemacht werden.
Geringe Störempfindlichkeit. Da binäre Symbole durch zweiwertige, physikalische Größen dargestellt
werden, bleiben Störungen ohne Auswirkung, sofern sie eine bestimmte Größe nicht überschreiten.
Speicherbarkeit. Bedingt durch die Zweiwertigkeit lassen sich binäre Werte hervorragend speichern.
Verarbeitung digitale Funktionen für die Verarbeitung binärer Signale lassen sich technisch leichter
miniaturisieren, integrieren und sehr viel kostengünstiger herstellen als analoge Funktionen, bei denen Streu-,
Rausch-, Linearitäts- und Reproduzierbarkeits-Probleme auftreten.
Rechnergrundlagen Teil 1
- 10 -
Prof.Dipl.-Ing. Komar
2.1 Digitalisieren
Heutzutage werden mit dem Computer längst nicht mehr nur Zahlen verarbeitet, sondern alles was zähl- und
meßbar ist wie Zahlen, Texte, Sprache, Musik, Bilder und viele andere physikalische Größen mit ihrem
zeitlichen Verläufen werden von Computern verarbeitet.
Um diese vielfältigen Informationen verarbeiten zu können, müssen diese zuerst in eine für den Computer
gemäße Form umgewandelt werden, nämlich in digitale, binärcodierte Daten.
Bei Informationen, die bereits in digitaler (diskreter) Form vorliegen, wie z.B. Zahlen und Texte erfordert
dies nur noch eine entsprechende Binärcodierung, bei analogen physikalischen Größen ist diese
Digitalisierung über eine Analog-Digital-Wandlung zu erzielen.
A/D-Wandlung bedeutet, man „rastert“ die stetige (kontinuierliche) physikalische Größe und die stetige Zeit
und durch diese Diskretisierung ersetzt man einen unendlichen durch einen endlichen Wertevorrat.
Die erhaltenen diskreten (digitalen) Daten werden danach nur noch binärcodiert.
analoge Darstellung (durch eine geometrische oder physikalische Größe )
Diskretisierung
diskretisierte wertkontinuierliche (analoge ) Darstellung
(diskret bezüglich Zeit und/oder Ort, unendlicher Wertevorrat )
Digitalisierung
digitale Darstellung durch Zahlen ( mehrwertiger, aber endlicher Wertevorrat )
(diskret bezüglich Zeit /Ort und Amplitude )
Codierung
binäre, digitale Darstellung für Rechnerverarbeitung
( zweiwertige parallele oder serielle Darstellung )
Zusammenhang der Begriffe analog, diskretisiert, digital und binär
Eine Temperaturkurve, ihre Diskretisierung und Digitalisierung
Ein Bild, seine diskretisierte und seine digitalisierte Darstellung
Rechnergrundlagen Teil 1
- 11 -
Prof.Dipl.-Ing. Komar
2.2 A/D-Wandlung
Erzeugung der binärcodierten Darstellung ( Digitalisierung ) einer
physikalischen Größe mit stetigem Wertebereich am abstrahierten Beispiel einer Analog-Digital-Wandlung
U
Analogsignal
Signal kontinuierlich in Zeit und Wert
Signal ->Spannung U
Signalparameter -> Amplitude der Spannung
Nachricht : Spannungsverlauf über der Zeit
Information : Temperaturverlauf über der Zeit
Interpretationsvorschrift : Temp = f ( U )
t
Abtastung
(Entnahme kurzer Amplitudenproben zu
äquidistanten Zeitpunkten)
U
Signal diskret in Zeit ,
kontinuierlich im Wert
Abtasttheorem (Shannon)
Kein Informationsverlust wenn gilt:
Fabtast
> 2
Fsignal_max
t
U
Quantisierung
(Unterteilung des Wertebereiches in eine
endliche Anzahl Intervalle)
Signal diskret in Zeit und Wert
digitales Signal (durch Zahlen darstellbar)
Quantisierungsfehler durch Verfeinerung
der Amplitudenstufung verringerbar
t
U
Codierung
(Wertestufen ersetzen durch binäres
Codewort )
digitales, binäres Signal
störunempfindlich durch nur noch zwei
gültige Werteintervalle
t
Serielle (Übertragung) oder parallele
(Verarbeitung) Realisierung möglich
hier: serieller Zeichenstrom
Rechnergrundlagen Teil 1
- 12 -
Prof.Dipl.-Ing. Komar
3. Informationstheorie
Die von Shannon 1948 entwickelte Informationstheorie untersucht Darstellung, Speicherung und Austausch
von Information mit Methoden aus der Wahrscheinlichkeitsrechnung und der mathematischen Statistik.
Sie versucht ein Maß zu finden für den Informationsgehalt einer diskreten Nachricht.
In Abgrenzung von dem sehr weit gefassten intuitiven Begriff "Information " befasst man sich in dem hier
betrachteten speziellen Fall mit der mathematisch fassbaren Entscheidungsinformation, die ihrem Wesen nach
statistischen Charakter trägt und nicht nach der semantischen Bedeutung oder dem Zweck einer Information
fragt.
3.1 Informationsgehalt
Mit dem Informationsgehalt möchte man ein Maß dafür finden, wieviel Information ein Zeichen trägt, um
einen möglichst quantitativen Vergleich mit anderen zu haben und es im Hinblick auf seinen technischen
Darstellungsaufwand bewerten zu können.
Es gibt kein Instrument zur Messung des Informationsgehaltes, er kann nur berechnet werden.
Eine diskrete Quelle erzeugt eine endliche Menge diskreter Symbole (Zeichen ). Für die Auftrittswahr scheinlichkeit p(i) der voneinander unabhängigen Zeichen eines Alphabets ( Symbole einer diskreten Quelle )
gilt:
0 ≤ p (i) ≤ 1
E
∑ p(i) =
1
i=1
p = 0 : völlige Ungewissheit ( Zeichen tritt nicht auf )
p = 1 : Gewißheit (nur dieses eine Zeichen, keine Information )
Statistisch unabhängige Zeichen liegen dann vor, wenn aus der Kenntnis eines Zeichens nicht auf das folgende
Zeichen geschlossen werden kann.
An die mathematische Beschreibung des statistischen Informationsgehaltes h(i) eines Zeichens i , das in einer
Nachricht mit der Auftrittswahrscheinlichkeit p (i) vorkommt, stellt man nun folgende Forderungen:
1.
Je seltener ein bestimmtes Zeichen i auftritt, d.h. je kleiner seine Auftrittswahrscheinlichkeit p (i) ist, desto
größer soll der Informationsgehalt h (i) dieses Zeichens sein. Häufig auftretende Zeichen sollen also einen
niedrigen Informationsgehalt haben, selten auftretende einen hohen, denn Information ist das Unerwartete
und seltenere Zeichen bedeuten eine größere „Überraschung“ beim Empfänger, übermitteln also mehr
Information.
Der Informationsgehalt h (i) muß demnach umgekehrt proportional der Wahrscheinlichkeit p(i) sein und
streng monoton wachsen.
h (i) ~ f ( 1 / p i )
2.
1 / p(i) = Überraschungswert
Die Gesamtinformation einer Zeichenfolge aus mehreren unabhängigen Zeichen soll gleich der Summe der
Informationsgehalte der einzelnen Zeichen sein.
Wobei die Auftrittswahrscheinlichkeit dieser Zeichenfolge gleich ist dem Produkt der Einzelwahrschein lichkeiten pi der die Nachricht bildenden Zeichen.
p (i1 i2 i3 ) = p (i1 ) * p (i2 ) * p ( i3 ) und es muß gelten
h ( i1 i2 i3 ) = h (i1 ) + h ( i2 ) + h ( i3 )
Beispiel: p (e) = 0,3 ; p (h) = 0,1 Zeichenfolge e h e p (ehe) = p(e) * p(h) * p(e) = 0.3 * 0,1 * 0,3 = 0,009
und
h ( e h e ) = h (e) + h (h) + h (e)
3. Weiter soll ein Zeichen i , das mit Sicherheit auftritt p (i ) = 1 , keinen Informationsgehalt haben h (i ) = 0
denn es erscheint nur immer dieses eine gleiche Zeichen und das vermittelt keine Information.
Die einfachste Funktion, welche diese Forderungen erfüllt, ist der Logarithmus log (x y ) = log x + log y
log ( 1 ) = 0
Rechnergrundlagen Teil 1
- 13 -
Prof.Dipl.-Ing. Komar
Mit diesen Grundannahmen hat Shannon den Informationsgehalt h eines einzelnen Zeichens wie
folgt definiert:
h ( i ) = log b 1/p(i) = - log b p(i)
Die Basis b des Logarithmus bestimmt lediglich den Maßstab, mit dem man Information messen möchte.
Man kann die Basis b, die auch als Entscheidungsgrad bezeichnet wird, als die Anzahl der Zustände
interpretieren, die in der Nachrichtenquelle angenommen werden können.
In der Technik werden die Werte b= 2, b = 10 und b = e verwendet
b=2
h in
[bit] mit log 2 = ld = Logarithmus dualis
mit
b = 10
h in
b = e = 2.71828...
ld N = 3.322 lg N
[dit /Hartley] mit log 10 = lg
[nit / nepit ] mit log e = ln
dekadischer Logarithmus
natürlicher Logarithmus
Da die meisten Taschenrechner die ld-Funktion nicht aufweisen, kann man den ld –Wert auch mit Hilfe des
Dekadischen Logarithmus bestimmen:
ld N = log 2 N = lg N / lg 2 = 3,322 * lg N
Im Falle b = 2 entsprechen die beiden Zustände ( 0 und 1 ) einer computergemäßen binären Darstellung und
der Informationsgehalt h(i) gibt die Anzahl der als Elementarentscheidungen bezeichneten Alternativ entscheidungen an, die nötig sind um ein Zeichen eindeutig identifizieren zu können.
Wichtig ist damit der Informationsgehalt speziell im binären : h(i) = ld 1/p(i)
[bit]
Die Einheit des Informationsgehaltes in Binärsystemen heißt bit ( basis information unit ).
Nicht zu verwechseln mit der Einheit für die Darstellung von Daten durch binäre Zeichen Bit ( binary digit ).
bit : abstrakt, kontinuierlich
Bit: konkret, diskret (nur ganzzahlig )
Bit ≥ bit
Informationsgehalt / Entropie
Maßeinheit für Daten in binärer Darstellung
Beispiel: In einem deutschsprachigen Text tritt der Buchstabe b mit der Wahrscheinlichkeit 0.016 auf. Wie groß
ist der Informationsgehalt dieses Zeichens ?
h (b) = ld (1/0.016) = 1/lg (2) * lg (1/0.016) = 3.322 lg 6.25 = 3.322 * 1.79588 = 5.97 bit
Empfängt man eine Nachricht in Form eines Binärwortes, so ist für jedes der empfangenen Zeichen
nacheinander die Elementarentscheidung zu treffen, ob es sich um das Zeichen 0 oder 1 handelt. Die Anzahl
der Entscheidungen, also der Informationsgehalt des Zeichens, ist hier notwendigerweise mit der Anzahl der
binären Stellen des Zeichens identisch. Einen derartigen Entscheidungsprozess kann man in Form eines
Binärbaumes veranschaulichen.
Der Sender (diskrete Quelle ) verfügt über ein Nachrichtenalphabet mit dem Elementarvorrat E , der Zahl der
Zeichen des Quell-Alphabets.
Dieses Quell-Alphabet wird auf ein Ziel-Alphabet ( Kanal-Alphabet, binär ) abgebildet und übertragen
der Empfänger kehrt die Abbildung des Senders um und rekonstruiert die ursprüngliche Nachricht durch eine
Anzahl von Binärentscheidungen (Alternativentscheidungen, Ja-Nein-Entscheidungen )
Rechnergrundlagen Teil 1
- 14 -
Prof.Dipl.-Ing. Komar
Übertragungskanal
Sender
Empfänger
binär
Zuordnung
(Codierung)
Zuordnung (Decodierung)
Alphabet 1 Alphabet 2
A
000
B
001
C
010
D
011
E
100
F
101
G
110
H
111
Codetabelle
Alphabet 2
Alphabet 1
000
A
001
B
010
C
011
D
100
E
101
F
110
G
111
H
Codetabelle
Ein Alphabet mit der einheitlichen Stellenzahl n je Zeichen und mit B-Werten je Stelle hat den
Elementarvorrat E = B n , das Alphabet besteht also aus E Zeichen
Alphabet 1 : n = 1
B = 8 -> E = 8
Alphabet 2:
n=3
B = 2 ->
E = 23 = 8
Beim Auswahlvorgang im Empfänger ( Decodieren ) wird ein Codebaum durchlaufen, indem die Stellen des
empfangenen Zeichens durch Binärentscheidungen abgefragt werden.
Codebaum (Binärbaum) des Auswahlvorgangs beim Empfänger durch Binärentscheidungen
Empfangen: 100 -> 3 Binärentscheidungen ->
E
Alphabet 2
000
Alphabet 1
A
001
B
010
C
0
1
0
0
1
1
011
0
0
100
100
E
101
F
110
G
111
H
1
1
0
0
1
1
Damit kann man sich nun den Informationsgehalt eines Zeichens innerhalb eines Zeichenvorrates vorstellen als
die Anzahl der Binärentscheidungen, die der Empfänger fällen muß, um dieses Zeichen zu ermitteln.
Da in obigem Beispiel durch die Annahme von gleichwahrscheinlichen Elementen des Alphabets 1 alle
Zeichen mit der gleichen Stellenzahl von 3 Bit binär codiert wurden, ist der Informationsgehalt und auch die
Anzahl der Binärentscheidungen für jedes Zeichen gleich.
Wenn die Auftrittswahrscheinlichkeit der Quellsymbole nicht mehr gleich ist (praktisch der Normalfall), so kann
der Informationsgehalt h eines Quellsymbols angesehen werden als der für dieses Symbol erforderliche
minimale binäre Codierungsaufwand in bit / Symbol, wobei eine nicht ganzzahlige binäre Stellenzahl [bit]
natürlich nur als aufgerundeter ganzzahliger Wert [Bit] realisierbar ist.
Rechnergrundlagen Teil 1
- 15 -
Prof.Dipl.-Ing. Komar
3.2 Entropie oder mittlerer Informationsgehalt
Eine Nachricht setzt sich im allgemeinen aus Zeichen bzw. aus zu Worten verbundenen Zeichen zusammen, die
mit unterschiedlicher Häufigkeit auftreten und damit einen unterschiedlichen Informationsgehalt tragen.
Wenn nun die Zeichen eines Alphabetes mit unterschiedlicher Wahrscheinlichkeit auftreten, dann ist jetzt der
durchschnittliche Informationsgehalt eines einzelnen Zeichens in einer langen Zeichenfolge von Interesse.
Dies ist der sogn. Erwartungswert oder auch der Mittelwert der Informationsgehalte aller Zeichen .
Wenn man in diesem Fall den Informationsgehalt h (i) für alle E Quellensymbole mit der zugehörigen
Wahrscheinlichkeit p(i) gewichtete und aufsummiert, dann erhält man den Mittelwert der Information, den
diese Quelle pro Symbol abgibt.
Sei h(i) der Informationsgehalt des i-ten Zeichens und p(i) die Wahrscheinlichkeit, mit der dieses Zeichen
auftritt, so ist der mittlere Informationsgehalt H , auch Entropie H genannt, gegeben durch
H =
E
∑
p(i) h(i)
=
i=1
E
∑
E
p(i) ld 1/p(i)
= -
∑
p(i) ld p(i)
[bit]
i =1
i=1
H wird auch als mittlerer Entscheidungsgehalt pro Zeichen oder als Entropie der Nachrichtenquelle
bezeichnet und gibt auch für die Codierung das Minimum der mittleren Binärstellenzahl an.
Mit Hilfe der Variationsrechnung kann man zeigen, daß H dann maximal wird, wenn alle Zeichen des Alphabets
( Elementarvorrat E ) gleich wahrscheinlich sind
mit p( i ) = 1 / E => H0 = H max =
E
E
i=1
i=1
∑ p(i) ld 1/p(i) = ∑ (1 / E ) ld E = E *1 / E * ld E = ld E
H0 wird als Entscheidungsgehalt bezeichnet und ist in der Informationstheorie die maximale Information,
die eine Quelle pro Symbol abgeben kann. D.h. jede Quelle, deren Symbole nicht gleichverteilt sind, sendet
nicht die maximale Information pro Symbol und dies ist im allgemeinen bei realen Nachrichtenquellen der Fall.
Damit verringert jede Abweichung von der Gleichverteilung den Informationsgehalt, d.h. die Quelle nützt
dann die Möglichkeiten des Zeichenvorrates ( Elementarvorrat E ) nicht aus.
Die Differenz zwischen dem Entscheidungsgehalt H0 und dem mittleren Informationsgehalt H der Quelle
wurde von Shannon als Redundanz der Quelle bezeichnet:
R = H0 – H
[ bit ]
Quellen-Redundanz
Diese Redundanz im informationstheoretischen Sinne wird auch als Redundanz vor der Codierung bezeichnet.
Das bedeutet, eine Quelle enthält umso mehr Redundanz, je geringer ihr mittlerer Informationsgehalt H gegenüber dem Entscheidungsgehalt H0 ist.
Als Entropie des deutschen Alphabets hat man für 30 Buchstaben (Großbuchstaben und Leerzeichen ) unter
der Annahme unabhängiger Zeichen einen Wert von H = 4,11 bit ermittelt.
Bei der Berücksichtigung von Abhängigkeiten ergibt sich von Silben ( Silbenlänge = 3,03 Buchstaben , H = 2,8
bit ) über Wörter ( Wortlänge = 5,53 Buchstaben , H = 2,0 bit ) bis zur Statistik von Sätzen ( H = 1,6 bit ) ein
sich immer weiter reduzierender mittlerer Informationsgehalt des deutschen Alphabets.
Der errechnete Wert der Entropie H = 1,6 bit für die deutsche Schriftsprache besagt, daß man für die
Codierung langer deutschsprachiger Texte nur 21,6 = 3 Symbole benötigen würde, die in den Codewörtern
gleichhäufig auftreten müßten. Solche Texte wären natürlich völlig unverständlich bzw bei dem kleinsten
Fehler von nur einem Symbol könnten sie vollständig unlesbar werden.
Aber man könnte so die Quellenredundanz von R = H0 – H = ld 30 – 1,6 = 4,9 – 1,6 = 3,3 bit beseitigen.
Rechnergrundlagen Teil 1
- 16 -
Prof.Dipl.-Ing. Komar
3.3 Mittlere Wortlänge und Codierungs-Redundanz
Im allgemeinen Fall sind die Zeichen einer Nachricht nicht gleichwahrscheinlich. D.h. die einzelnen
Zeichen des zugrundeliegenden Alphabets werden mit unterschiedlicher Häufigkeit in der Nachricht auftreten.
Es ist naheliegend, die Codierung so zu wählen, daß für häufiger auftretende Zeichen des Quellalphabets
kürzere Zeichen im binären Zielalphabet gewählt werden um insgesamt die Anzahl der Binärentscheidungen
beim Empfang einer Zeichenfolge zu minimieren bzw. die mittlere Anzahl der Binärentscheidungen
pro Zeichen zu minimieren (Codierung mit variabler Wortlänge ).
Codewörter für Zeichen mit geringer Wahrscheinlichkeit enthalten demnach bei optimaler Codierung mehr
Binärstellen als jene mit größerer Wahrscheinlichkeit. Mehr Binärstellen bedeuten mehr Binärentscheidungen
und mehr Binärentscheidungen bedeutet mehr Informationsgehalt.
Informationstheoretisch ausgedrückt: Es ist eine (binäre) Ersatzquelle durch Umcodieren so zu schaffen, daß
die Auftrittswahrscheinlichkeit ihrer Symbole möglichst eine Gleichverteilung ergibt und die Ersatzquelle damit
pro (binärem) Symbol ein Maximum an Information abgibt. Dieses Umcodieren ist möglich bei einem
vermindertem Symbolvorrat (z.B. binär 0 und 1 ) der Ersatzquelle.
Beispiel:
Quelle
Alphabet mit den vier Zeichen a, b, c, d
Wahrscheinlichkeiten für deren Auftreten p(a) = ½ , p(b) = ¼, p(c) = 1/8, p(d) = 1/8
Summe aller Wahrscheinlichkeiten = 1
bekannte Wahrscheinlichkeit
Alphabet 1
Überraschungswert
p
a
b
c
d
1/p
½
¼
1/8
1/8
Binärstellenzahl
l = ld 1/p
2
4
8
8
Informationsgehalt
h = ld 1/p
1
2
3
3
Ziel
Alphabet 2
1
2
3
3
0
10
110
111
Bei diesem Beispiel wurde jedes Zeichen mit seiner minimalen Binärstellenzahl l codiert und damit benötigt der
Empfänger für die Decodierung jedes Zeichens eine andere Anzahl von Binärentscheidungen, als wenn man
z.B. einheitlich mit der Binärstellenzahl 2 codiert hätte.
H = p(a) ld 1/p(a) + p(b) ld 1/p(b) + p(c) ld 1/p(c) + p(d) ld 1/p(d) =
H=
0.5 * 1
+ 0.25 * 2
+
0.125 * 3
+
0.125 * 3
= 1.75 bit
Die Entropie H = 1.75 bit zeigt, daß die gewählte Codierung im Mittel weniger Binärentscheidungen bei der
Auswahl eines Zeichens zur Folge hat, als bei Codierung aller vier Zeichen mit gleicher Binärstellenzahl von
l = 2, was dem H max = H0 = ld E = 2 bit entsprechen würde.
Unter der mittleren Wortlänge L eines Codes versteht man die mit den Auftrittswahrscheinlichkeiten p(i ) gewichtete Summe der Längen l(i) der , den einzelnen Zeichen entsprechenden Codewörtern.
L =
E
∑ p(i)
l(i)
[ bit ]
i=1
Wobei l(i) für die Länge oder Stellenzahl des dem i-ten Zeichen entsprechenden Codewortes steht.
Da in obigem Beispiel die Länge jedes Binärwortes l(i) gleich dem Informationsgehalt h(i) gewählt
werden konnte (ganzzahlig, denn die Wahrscheinlichkeiten sind Zweierpotenzen) , ist die mittlere Wortlänge L
des Codes auch gleich dem mittleren Informationsgehalt H
L = H = 1.75 bit
Rechnergrundlagen Teil 1
- 17 -
Prof.Dipl.-Ing. Komar
Shannonsches Codierungstheorem
H
1. Es gilt stets
<
L
2. Jede Nachrichtenquelle kann so codiert werden, daß die Differenz L - H beliebig klein wird,
wenn man sich nicht auf die Codierung von einzelnen Zeichen beschränkt, sondern Gruppen von
Zeichen zusammenfasst, die möglichst übereinstimmende Auftrittswahrscheinlichkeiten haben.
(aber L - H = 0 nur möglich, wenn die Wahrscheinlichkeiten p(i) reziproke Potenzen von 2 sind )
Die mittlere Wortlänge L eines Codes ist immer größer oder bestenfalls gleich dem mittleren
Informationsgehalt H der Zeichen des Codes.
Die Differenz zwischen mittlerer Wortlänge L und mittlerem Informationsgehalt H wird mit
Redundanz R des Codes bezeichnet ( auch als Redundanz nach der Codierung )
R = L – H
[bit]
mit
R > 0
Codierungs-Redundanz
Bezieht man die Redundanz R auf die mittlere Wortlänge L so erhält man die relative Redundanz r
r = R/L
manchmal auch in [%]
In obigem Beispiel ist die mittlere Wortlänge L des Codes gleich dem mittleren Informationsgehalt H und
damit die Redundanz nach der Codierung R = 0.
Wären alle vier Zeichen des Codes mit gleicher Binärstellenzahl von 2 codiert worden, so ergäbe sich
mit L = 2 die Redundanz R = L – H = 2 - 1.75 = 0.25 bit und r = 0.125 oder r = 12.5 %
Im folgenden wird für obiges Beispiel für die durch Umcodierung erzeugte binäre Ersatzquelle die Statistik ihrer
beiden Binärsymbole berechnet:
Eine Nachricht aus 8 Quellsymbolen besteht entsprechend der Auftrittswahrscheinlichkeiten aus
4xa
2xb
1xc
1xd
4x0
2x0
1x0
Summe 7 x 0
2x1
2x1
3x1
7x1
und damit weisen die beiden Binärsymbole 0 und 1 die gleiche Auftrittshäufigkeit von 50% auf .
Somit wurde aus der Redundanz vor der Codierung (Quellredundanz) von R = H0 – H = 0,25 bit durch die
binäre Umcodierung die Redundanz nach der Codierung (Codierungsredundanz) mit R = L – H = 0 bit .
Werden die 30 Zeichen des deutschen Alphabets mit 5 Bit gleichlang codiert ( H0 = ld 30 = 4,91 bit ) , so ergibt
sich die Codierungs-Redundanz R bei der Annahme von unabhängigen Zeichen mit H = 4,11 bit zu
R = L – H = 5 – 4,11 = 0,89 bit r = 17,8 % ( siehe Seite 26 )
Dagegen ergibt eine Codierung anhand der Wahrscheinlichkeiten ( FANO-Codierung ) eine mittlere Wortlänge von L = 4,148 bit und damit nur noch eine Redundanz von R = 0,034 bit , r = 0,81 %.
Redundanz bedeutet, daß mehr Bit übertragen werden als für die Nachrichtenübermittlung eigentlich
benötigt werden und bedingt damit unausgenutzte Kapazität und erhöhte Kosten. Da in praktischen Fällen die
einzelnen Zeichen fast nie gleich häufig auftreten, ist die Codierung mit fester Wortlänge meist redundand.
Andererseits ermöglicht erst die Redundanz bei Übertragungsstörungen eine Fehlererkennung oder gar
Fehlerkorrektur.
Natürliche Sprachen weisen einen sehr hohen Grad an Redundanz auf, so daß sich zum Beispiel das
Auslassen von Buchstaben oder Silben nicht unbedingt verständnismindernd auswirken muß.
Rechnergrundlagen Teil 1
- 18 -
Prof.Dipl.-Ing. Komar
Zusammenfassung
E
∑ p(i) =
0 ≤ p (i) ≤ 1
Auftrittswahrscheinlichkeiten
1
i=1
h(i) = ld 1/p(i)
Informationsgehalt eines Zeichens
[bit]
Entropie , mittlerer Informationsgehalt
H =
E
∑
p(i) h(i)
=
i=1
E
∑
E
p(i) ld 1/p(i)
= -
E
Entscheidungsgehalt H0 = H max =
mittlere Code-Wortlänge
p(i) ld p(i)
∑
E
p(i) ld 1/p(i) =
i=1
Quellen-Redundanz
(vor der Codierung)
∑
i=1
R = H0 – H
L =
∑ (1 / E ) ld E = E *1 / E * ld E = ld E
E
∑ p(i)
[ bit ]
l(i)
[ bit ]
i=1
Codierungs-Redundanz
(nach der Codierung)
[bit]
i =1
i=1
R = L – H
[bit]
mit
R > 0
Rechnergrundlagen Teil 1
- 19 -
3. 4 Tabelle zur Berechnung der Entropie
p
ld (1/p)
p ld (1/p)
H2 (p)
0,00
0,01
0,02
0,03
0,04
0,05
0,06
0,07
0,08
0,09
0,10
0,11
0,12
0,13
0,14
0,15
0,16
0,17
0,18
0,19
0,20
0,21
0,22
0,23
0,24
0,25
0,26
0,27
0,28
0,29
0,30
0,31
0,32
0,33
0,34
0,35
0,36
0,37
0,38
0,39
0,40
0,41
0,42
0,43
0,44
0,45
0,46
0,47
0,48
0,49
0,50
0,51
0,52
0,53
0,54
0,55
0,56
0,57
0,58
0,59
0,60
0,61
0,62
0,63
–
6,64386
5,64386
5,05889
4,64386
4,32193
4,05889
3,83650
3,64386
3,47393
3,32193
3,18442
3,05889
2,94342
2,83650
2,73697
2,64386
2,55639
2,47393
2,39593
2,32193
2,25154
2,18442
2,12029
2,05889
2,00000
1,94342
1,88897
1,83650
1,78588
1,73697
1,68966
1,64386
1,59946
1,55639
1,51457
1,47393
1,43440
1,39593
1,35845
1,32193
1,28630
1,25154
1,21754
1,18442
1,15200
1,12029
1,08927
1,05889
1,02915
1,00000
0,97143
0,94342
0,91594
0,88897
0,86250
0,83650
0,81097
0,78588
0,76121
0,73697
0,71312
0,68966
0,66658
0
0,06644
0,11288
0,15177
0,18575
0,21610
0,24353
0,26856
0,29151
0,31265
0,33219
0,35029
0,36707
0,38264
0,39711
0,41054
0,42302
0,43459
0,44531
0,45523
0,46439
0,47282
0,48057
0,48767
0,49413
0,50000
0,50529
0,51002
0,51422
0,51790
0,52109
0,52379
0,52603
0,52782
0,52917
0,53010
0,53062
0,53073
0,53045
0,52980
0,52877
0,52738
0,52565
0,52356
0,52115
0,51840
0,51534
0,51596
0,50827
0,50428
0,50000
0,49543
0,49058
0,48545
0,48004
0,47437
0,46844
0,46225
0,45581
0,44912
0,44218
0,43500
0,42759
0,41994
0
0,08079
0,14144
0,19439
0,24229
0,28640
0,32744
0,36592
0,40218
0,43647
0,46900
0,49992
0,52936
0,55744
0,58424
0,60984
0,63431
0,65770
0,68008
0,70147
0,72193
0,74148
0,76017
0,77801
0,79504
0,81128
0,82675
0,84146
0,85545
0,86872
0,88129
0,89317
0,90438
0,91493
0,92482
0,93407
0,94268
0,95067
0,95804
0,96480
0,97095
0,97650
0,98145
0,98582
0,98959
0,99277
0,99538
0,99740
0,99885
0,99971
1,00000
0,99971
0,99885
0,99740
0,99538
0,99277
0,98959
0,98582
0,98145
0,97650
0,97095
0,96480
0,95804
0,95067
Prof.Dipl.-Ing. Komar
H2(p) = p ld (1/p) + (1 – p ) ld (1/1-p)
p
ld (1/p)
p ld (1/p)
H2(p)
0,64
0,65
0,66
0,67
0,68
0,69
0,70
0,71
0,72
0,73
0,74
0,75
0,76
0,77
0,78
0,79
0,80
0,81
0,82
0,83
0,84
0,85
0,86
0,87
0,88
0,89
0,90
0,91
0,92
0,93
0,94
0,95
0,96
0,97
0,98
0,99
1,00
0,64386
0,62149
0,59946
0,57777
0,55639
0,53533
0,51457
0,49411
0,47393
0,45403
0,43440
0,41504
0,39593
0,37707
0,35845
0,34008
0,32193
0,30401
0,28630
0,26882
0,25154
0,23447
0,21759
0,20091
0,18442
0,16812
0,15200
0,13606
0,12029
0,10470
0,08927
0,07400
0,05889
0,04394
0,02915
0,01450
0,00000
0,41207
0,40397
0,39564
0,38710
0,37835
0,36938
0,36020
0,35082
0,34123
0,33144
0,32146
0,31128
0,30091
0,29034
0,27959
0,26866
0,25754
0,24625
0,23477
0,22312
0,21129
0,19930
0,18713
0,17479
0,16229
0,14963
0,13680
0,12382
0,11067
0,09737
0,08391
0,07030
0,05654
0,04263
0,02856
0,01435
0,00000
0,94268
0,93407
0,92482
0,91493
0,90438
0,89317
0,88129
0,86872
0,85545
0,84146
0,82675
0,81128
0,79504
0,77801
0,76017
0,74148
0,72193
0,70147
0,68008
0,65770
0,63431
0,60984
0,58424
0,55744
0,52936
0,49992
0,46900
0,43647
0,40218
0,36592
0,32744
0,28640
0,24229
0,19439
0,14144
0,08079
0,00000
H2 = Entropie einer binären Datenquelle
Rechnergrundlagen Teil 1
4.
- 20 -
Prof.Dipl.-Ing. Komar
Codierung
Ein Code ist eine Zuordnungsvorschrift zwischen zwei Zeichenmengen. Den Vorgang der Zuordnung nennt
man Codierung bzw Decodierung.
Zweck einer Codierung ist die Umformung einer gegebenen Zeichenmenge in eine nach bestimmten Kriterien
geeignetere Zeichenmenge.
Diese Kriterien folgen aus den jeweiligen technischen Problemen bei der Übertragung, Verarbeitung,
Speicherung und Geheimhaltung von Nachrichten bzw Daten.
Die Auswahl eines geeigneten Codes ist abhängig von den Forderungen, die an die binären Daten bezüglich ihrer
Speicherung, Übertragung oder Verarbeitung gestellt werden, z.B.
. Codes zur effektiven Rechnung ( z.B. Dualcode )
. Codes zur Datenübertragung und Speicherung ( prüfbare Codes )
. Codes zur Meßwertaufnahme bzw A/D-Wandlung (Gray-Code )
Im folgenden sind einige Gesichtspunkte, die bei der Codierung von Bedeutung sind, zusammengestellt
Bewertbarkeit
Will man eine binär codierte Zahl in eine analoge Größe umwandeln, so ist dies besonders einfach, wenn jeder
Binärstelle ein Gewicht oder eine Wertigkeit zugeordnet ist.
Komplementierbarkeit
Der übliche Weg, in einer Rechenanlage eine Subtraktion durchzuführen, ist die Komplement-Addition. Zum
Rechnen sind deshalb Codes vorteilhaft, die das (B-1)-Komplement möglichst einfach bilden, beispielsweise
durch Invertierung sämtlicher Bits.
Einfache Konvertierbarkeit
Binär verschlüsselte Dezimalzahlen müssen oft in Dualzahlen konvertiert werden. In diesem Fall ist es
angenehm, wenn diese Konvertierung leicht möglich ist.
Einfache Additionsregeln, Übertragsbildung
Entsteht bei der Addition zweier Dezimalzahlen ein Übertrag zur nächsthöheren Dekade, so sollte bei der
Addition der entsprechenden Codewörter ebenfalls ein Übertrag im (n+1)-ten Bit entstehen.
Leichte Rundungsregeln
durch leichte Unterscheidbarkeit von Zahlen, die größer und kleiner als 5 sind.
Prüfbarkeit Leichte Erkennung von Verfälschungen eines Codewortes.
Grundbegriffe
Bewertbar heißt, jeder Binärstelle des Codewortes ist eine Wertigkeit zugeordnet.
Als Gewicht eines Codeworts bezeichnet man die Anzahl der mit 1 belegten Stellen.
Die Hamming-Distanz D zweier Codewörter entspricht der Anzahl der Binärstellen, die sich in diesen beiden
Codewörtern ( Nutzwörtern ) unterscheiden
Ein Code ist stetig, wenn die Hamming-Distanz zwischen zwei benachbarten Codewörtern über den gesamten
Code hinweg konstant ist.
Ein Code heißt einschrittig, wenn die Hamming-Distanz zweier benachbarter Codewörter konstant
gleich eins ist.
Redundanz bedeutet im Zusammenhang mit der Codierung, daß ein Code mehr Kombinationsmöglichkeiten
besitzt als zur Codierung benutzt werden.
R = L – ld n
n = Zahl der benutzten Kombinationen, Anzahl der Nutzwörter
L = Wortlänge oder Anzahl der Binärstellen
( R = L - ld E
E = Elementarvorrat )
Rechnergrundlagen Teil 1
- 21 -
Prof.Dipl.-Ing. Komar
4.1 Codierungsarten
Sender
Quelle
X
digital
Quellencodierer
m
nn
Kanalcodierer
binär
Ziel: R => 0
u
Modulator
binär
Ziel: d => max
(Nebeneffekt R => größer )
Störung
Senke
Y
digital
Quellendecodierer
Kanaldecodierer
m*
binär
u*
Kanal
Demodulator
binär
Empfänger
Übertragung von Nachrichten/Daten über gestörte räumliche (Übertragungsstrecken) oder zeitliche
( Speicher ) Kanäle .
Quellcodierung
Ziel: R Code = 0
formt ein primäres Signal X in ein binäres Signal so um, daß dieses möglichst nur das
erforderliche Minimum an Information enthält.
Durch Umcodierung soll eine binäre Ersatzquelle geschaffen werden, die möglichst
gleichhäufig Nullen und Einsen sendet und damit redundanzfrei ist.
Die binäre Zeichenfolge m soll also möglichst wenig Redundanz besitzen und die
entsprechenden Codes für diese Redundanzreduktion sind sogn. Optimale Codes.
Quellencodierung im Zusammenhang mit der Datenübertragung und Speicherung wird
heute zunehmend als Datenkompression bezeichnet, worunter man die Reduzierung der
Datenmenge zur Reduzierung von Übertragungszeit und /oder Speicherplatz versteht.
Und zwar werden bei digitalen Daten wie Zahlen oder Text informationserhaltende,
verlustfreie Kompressionsverfahren verwendet.
Bei digitalisierten kontinuierlichen Daten wie Bildern und Tönen werden oft auch
informationsreduzierende, verlustbehaftete Datenkompressionsverfahren eingesetzt.
Dies wird auch als Irrelevanzreduktion bezeichnet, weil physiologisch nicht wahrnehmbare Bestandteile der Nachricht anhand eines Gütekriteriums vernachlässigt werden.
( JPEG, MPEG sind derartige Kompressionsstandards )
Kanalcodierung codiert eine Zeichenfolge m in eine Sendefolge u so um, daß in der gestörten
Empfangsfolge u* eine Fehlerminderung ( Fehlererkennung, Fehlerkorrektur )
möglich ist.
Die entsprechenden Codes, mit denen eine derartige Codesicherung möglich ist, heißen
Prüfbare Codes.
Ziel: möglichst große Hammingdistanz d => max, aber dadurch R => größer
Verarbeitungscodierung codiert digitale Daten wie Text, Ziffern und Zahlen mit numerischen und
alphanumerischen Codes für die effiziente Verarbeitung im Rechner.
Das Grundproblem der Codierung besteht darin, einen „guten“ Code zu finden,
– der sich mit wenig Rechenzeit erzeugen läßt
–
eine geringe Redundanz hat
–
mit wenig Rechenzeit decodierbar ist
– und dabei eine kleine Restfehlerwahrscheinlichkeit der empfangenen Zeichenfolge m* liefert
Rechnergrundlagen Teil 1
- 22 -
Prof.Dipl.-Ing. Komar
4.2 Optimale Codes
Bei optimalen Codes versucht man, die im Mittel auftretende Codewortlänge L bzw die Redundanz R zu
minimieren, oder anders ausgedrückt, man codiert so nahe wie möglich am theoretischen Grenzwert, d.h. so
wenig wie möglich über der Entropie H des gegebenen Modells der Wahrscheinlichkeiten für die
Quellsymbole. Der minimal erreichbare Idealwert für L wäre dabei der mittlere Informationsgehalt H des
Zeichenvorrats. ( R = L – H = 0 nur erreichbar, wenn die Auftrittswahrscheinlichkeiten p(i) = 2– x reziproke
Zweierpotenzen sind. )
Informationstheoretisch ist optimale Codierung die Schaffung einer optimalen binären Ersatzquelle.
Damit die einzelnen Zeichen bei wechselnden Wortlängen ohne Trennzeichen aus dem Bitstrom identifizierbar sind, muß die Fano-Bedingung eingehalten werden:
Kein Wort aus dem Code ist Anfang eines anderen Codewortes
Wenn diese Bedingung erfüllt ist, dann ist offensichtlich die Fuge durch das Nicht-mehr-weiter-lesen-können
bestimmt. ( Fano-Bedingung ist hinreichend, aber nicht notwendig )
Mit obiger Formulierung ist gleichbedeutend, daß bei Darstellung eines Codes als Codebaum die Code-Wörter
nur die Blätter (Endknoten) des Baumes besetzen dürfen, nicht aber die Verzweigungsstellen (Knoten).
Man sagt auch, die Menge der verwendeten Bitfolgen ist kommafrei (Präfixcode).
Beispiel im vorherigen Kapitel:
Man kann sich leicht überzeugen, daß der gewählte Code umkehrbar eindeutig ist, d. h. daß man den ursprünglichen Strom von Zeichen des Quellalphabets eindeutig aus dem Strom der Zeichen des Zielalphabets
rekonstruieren kann, weil die Fano-Bedingung eingehalten wurde.
Der beliebig gewählte Bit-Strom 0111110100
ergibt a d c b a als Zeichenstrom des Quellalphabets
4.2.1 Fano-Codierung
Von Fano stammt ein Algorithmus, der die Fano-Bedingung automatisch einhält und sehr einfach zu
implementieren ist. Es ist jedoch nicht garantiert, daß der erzeugte Code im Sinne der Redundanz-Minimierung
in jedem Fall optimal ist, wenn auch die Abweichungen praktisch kaum eine Rolle spielen.
1.
2.
Die zu codierenden Zeichen i werden in einer Tabelle nach fallenden Wahrscheinlichkeiten p(i) geordnet.
In der zweiten Spalte werden – beginnend mit der kleinsten Wahrscheinlichkeit – die Teilsummen der p(i)
eingetragen. In der obersten Zeile steht somit eine 1.
3. Die Folge der Teilsummen wird in zwei, möglichst gleich große Intervalle unterteilt ( Schnitt bei 50% )
4. Für alle Zeichen oberhalb des Schnittes wird für den Code eine 0 eingetragen, für alle Zeichen unterhalb
des Schnittes eine 1 (oder umgekehrt )
5. Alle entstandenen Teilfolgen werden wieder halbiert und die nächste Binärstelle wird gemäß Schritt 4
eingetragen.
6. Enthält eine Teilfolge nur noch ein Zeichen, so endet das Verfahren für dieses Zeichen, da dessen Code nun
komplett ist.
Beispiel: Quelle mit fünf Symbolen
a
b
c
d
e
Wahrscheinlichkeit 0.40 0.20 0.18 0.11 0.11
p(i)
∑
p(i)
1.
2.
3.Schritt
Code
l(i)
l(i) p(i)
a
0.40
1.00
0
0
00
2
0.80
b
0.20
0.60
0
1
01
2
0.40
c
0.18
0.40
1
0
10
2
0.36
d
0.11
0.22
1
1
0
110
3
0.33
e
0.11
0.11
1
1
1
111
3
0.33
H = 2.1391 bit
L =
2.22 bit
R =
0.08 bit
Rechnergrundlagen Teil 1
- 23 -
Prof.Dipl.-Ing. Komar
4.2.2 Huffman-Codierung
Die nach dem französischen Mathematiker Huffman benannte Huffman-Codierung ist eine Verfeinerung der
Codiermethode nach Shannon-Fano und liefert einen besonders redundanzarmen Code. Für gegebene
Wahrscheinlichkeiten erstellt der Huffman-Algorithmus eine Codetabelle, die jedem Quellsymbol eine Bitfolge
zuordnet.
Der Algorithmus ist optimal in dem Sinne, daß mit keiner anderen Zuordnung von Bitfolgen eine bessere
Kompression erreicht werden könnte und die Bitfolgen genügen der Fano-Bedingung, sind also kommafrei.
Der Huffman-Algorithmus baut den Codebaum rekursiv auf, indem er jeweils die zwei Zeichen mit der
kleinsten Wahrscheinlichkeiten zu einem Teilbaum zusammenfaßt.
Dieser Teilbaum geht als ein Zeichen mit der Summe der Wahrscheinlichkeiten der zusammengefaßten Zeichen
in den weiteren Verlauf des Algorithmus ein.
Den beiden Ästen des Baumes werden die Bitwerte 0 und 1 zugewiesen.
Dieser Prozeß wird solange fortgesetzt, bis alle Zeichen oder Symbole zu einem Baum zusammengefaßt sind.
1. Beispiel: Quelle mit fünf Symbolen
Wahrscheinlichkeit P( i )
1.Schritt
p
a 0.40
b 0.20
c 0.18
d 0.11 0
e 0.11 1
2.Schritt
p
a
de
b
c
a
0.40
b
0.20
3.Schritt
p
0.40
0.22
0.20 0
0.18 1
c
0.18
d
0.11
e
0.11
4.Schritt
p
a 0.40
bc 0.38 0
de 0.22 1
p
bcde 0.60 0
a 0.40 1
abcde
1.00
4.Schritt
1.0
1
0
a
0.6
3.Schritt
0.4
0
1.Schritt
0.22
0
a
b
c
d
e
p(i)
Code
0.40
0.20
0.18
0.11
0.11
1
000
001
010
011
l(i) p(i) l(i)
1
3
3
3
3
0.40
0.60
0.54
0.33
0.33
L = 2.20 bit
ld 1/p
1.322
2.322
2.474
3.184
3.184
1
0.38
1
0
d
e
b
0.11
0.11
0.2
p ld 1/p
0.5288
0.4644
0.4453
0.3503
0.3503
H = 2.1391 bit
R = L – H = 0.06 bit
2.Schritt
1
c
0.18
Rechnergrundlagen Teil 1
2.Beispiel: Quelle mit acht Symbolen
Wahrscheinlichkeit P( i )
Codewort
(aus Huffmancodierung)
- 24 -
Prof.Dipl.-Ing. Komar
A
0.34
B
0.24
C
0.14
D
0.12
E
0.07
F
0.05
G
0.03
H
0.01
11
01
101
100
000
0011
00101
00100
Eine weitere Verminderung der Redundanz läßt sich nur noch durch Gruppencodierung, also durch Codieren
von Zeichengruppen erzielen.
Die beiden vorgestellten Verfahren setzten voraus, daß vor der ersten Anwendung die Auftrittswahrschein lichkeiten der einzelnen Zeichen feststehen, d.h. daß ein statisches Modell der Wahrscheinlichkeiten der
Quellsymbole gegeben ist oder ermittelt wird ( Entropiecodierung ).
Wenn diese Vorraussetzung nicht erfüllt ist (oft in der Praxis), dann versucht man durch adaptive Codes eine
bessere Datenverdichtung zu erreichen.
Bei adaptiven Codes führen sowohl der Sender als auch der Empfänger für jedes Zeichen einen Zähler mit und
mit der fortlaufend berechneten relativen Häufigkeit der Zeichen als Näherung für deren Auftrittswahrscheinlichkeit ändert man fortlaufend den Code, bzw erstellt einen neuen Code.
Diese Adaption des Codes wird nach jeweils N übertragenen Zeichen von Sender und Empfänger synchron
durchgeführt.
Für diese Adaption eignet sich das sogn. Arithmetische Codieren [ 1 ], [ 2 ] besser als der adaptive
Huffman-Code.
Unter Datenkompression versteht man die Reduzierung der Datenmenge zum Zwecke der Übertragung
oder Speicherung.
Bei der verlustfreien Datenkompression ist das Ziel eine Redundanz-Reduktion möglichst auf Null. Es bleibt
aber die in den Daten enthaltene Information ohne Änderung erhalten.
Bei der verlustbehafteten Datenkompression (Datenreduktion) ist das Ziel eine Verringerung der
Datenmenge, wobei die Information im wesentlichen erhalten bleibt, aber ein gewisser Informationsverlust in
Kauf genommen wird. Dies ist zum Beispiel möglich bei Messwerten (wg. überlagertem Rauschen) und bei
Bild- und Tondaten, wenn die Veränderungen für den Menschen nicht wahrnehmbar sind.
Neben den bereits bekannten Verfahren von Huffman und Fano werden auch noch die folgenden Verfahren
eingesetzt, wobei die Methoden für die verlustfreie Datenkompression mit geringen Modifikationen auch zur
verlustbehafteten Datenkompression verwendbar sind :
- Lauflängen-Codierung (Run-Length Coding) für Binärbilder und Grafiken; es werden nicht nur die Daten
abgespeichert, sondern zusätzlich die Anzahl, wie oft aufeinander folgende Daten den selben Wert aufweisen
- Differenz-Codierung für Meßwerte; wobei nur die Differenzen aufeinanderfolgender Werte abgespeichert
werden
- Arithmetische Codierung
- LZW-Algorithmus (nach seinen Erfindern Lempel, Ziv und Welch ) hat sich für die verlustfreie
Kompression beliebiger Daten als effizientestes Verfahren durchgesetzt. Es erreicht zwar nicht ganz den
Kompressionsgrad des Huffman-Verfahrens, ist jedoch beim Komprimieren und Dekomprimieren deutlich
schneller und bietet für eine große Masse von unterschiedlichen Dateien den besten Kompromiss.
Es handelt sich dabei um ein statistisches Verfahren, das Zeichengruppen unterschiedlicher Länge codiert.
Dessen Prinzip besteht darin, beim Übertragen des Datenstromes zu überprüfen, ob einzelne Zeichenfolgen
schon vorher im abgearbeiteten Teil vorgekommen sind und durch einen Rückbezug ersetzt werden können.
Rechnergrundlagen Teil 1
- 25 -
Prof.Dipl.-Ing. Komar
Lauflängen-Codierung
stellt die einfachste Form der Datenkompression dar.
Bei der Lauflängen-Codierung (Run-Length Coding ) werden nicht nur die codierten Daten abgespeichert,
sondern zusätzlich noch die Anzahl, wie oft aufeinanderfolgende Daten denselben Wert aufweisen. Man
speichert also Zahlenpaare der Art (f,n) ab, wobei f den Wert der Date und n die Lauflänge angibt, immer
gerechnet ab Anfang des Datenstroms, bzw. ab Ende der vorhergehenden Sequenz.
Mit Hilfe dieses Verfahrens lassen sich nur Daten effizient komprimieren, in denen zahlreiche homogene
Bereiche mit nur einem einzigen Zeichen auftreten. Dies ist vor allem bei computergenerierten Bildern und
Grafiken sowie in Binärbildern mit nur zwei Helligkeitsstufen der Fall.
Beispiel für die Lauflängen-Codierung eines Binärbildes aus 64 Bildpunkten (Pixel), die entweder schwarz
oder weiß sind.
0
0
0
0
0
0
1
0
0
0
0
0
0
1
1
0
0
0
0
0
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0 0 1 0 1 0 1 1 0
0 1 0 0 1 0 1 0 0
0 1 1 0 1 0 0 1 0
1
0
In der Mitte das dem Bild zugeordnete Bit-Muster : 1 => Schwarz, 0 => Weiß
Rechts das Bitmuster der Lauflängen-Codierung. Zuerst wird in drei Bits die Lauflänge angegeben .
Dabei bedeuten: 001=1, 010=2, 011=3, 100=4, 101=5, 110=6, 111=7, 000=8
Danach folgt der Code des Bildpunktes, also 0 oder 1.
Es wurde offenbar eine Kompression von 64 auf 56 Bit erreicht.
Aufgabe: Welche Kompression läßt sich bei obigem Beispiel durch Gruppencodierung erreichen ?
p(0)=
p(1)=
H=
L=
1.Variante: Gruppenstatistik berechnen aus Einzelstatistik
Gruppenpaar
00
01
10
11
2.Variante: Gruppenstatistk direkt aus gegebenem Bild ermitteln
Gruppenpaar
00
01
10
11
R=
Rechnergrundlagen Teil 1
- 26 -
Prof.Dipl.-Ing. Komar
Entropie des deutschen Alphabetes
Lfd.
Nr.
i
Buchstabe
xi
1
2
1
–
Wahrscheinlichkeit
p(xi)
3
Summe
Code (FANO)
Bit /
Buchstabe
l(xi)
si
4
p(xi)l (xi)
p(xi)ld(1/p(xi))
5
6
7
8
000
3
0,45447
0,41251
001
3
0,44100
0,40661
010
3
0,26505
0,30927
0110
4
0,27432
0,26512
0111
4
0,25508
0,25323
1000
4
0,21552
0,22705
1001
4
0,18924
0,20824
1010
4
0,17540
0,19783
10110
5
0,21775
0,19691
10111
5
0,21655
0,19616
11000
5
0,15940
0,15847
11001
5
0,14655
0,14927
11010
5
0,13365
0,13968
11011
5
0,13335
0,13945
111000
6
0,12804
0,11842
111001
6
0,10632
0,10389
111010
6
0,09582
0,09585
111011
6
0,08538
0,08727
111100
6
0,08520
0,08716
111101
6
0,08160
0,08431
1111100
7
0,06692
0,06412
1111101
7
0,05145
0,05209
11111100
8
0,04640
0,04309
11111101
8
0,03992
0,03817
11111110
8
0,03928
0,03764
111111110
9
0,02295
0,02194
1111111110
10
0,01650
0,01521
11111111110
11
0,00187
0,00217
111111111110
12
0,00180
0,00181
111111111111
12
0,00156
0,00167
1,00000
0,15149
0,84851
2
E
0,14700
0,70151
3
N
0,08835
0,61316
4
R
0,06858
0,54458
5
I
0,06377
0,48081
6
S
0,05388
0,42693
7
T
0,04731
0,37962
8
D
0,04385
0,33577
9
H
0,04355
0,29222
10
A
0,04331
0,24891
11
U
0,03188
0,21703
12
L
0,02931
0,18772
13
C
0,02673
0,16099
14
G
0,02667
0,13432
15
M
0,02134
0,11298
16
O
0,01772
0,09526
17
B
0,01597
0,07929
18
Z
0,01423
0,06506
19
W
0,01420
0,05086
20
F
0,01360
0,03726
21
K
0,00956
0,02770
22
V
0,00735
0,02035
23
Ü
0,00580
0,01455
24
P
0,00499
0,00956
25
Ä
0,00491
0,00465
26
Ö
0,00255
0,00210
27
J
0,00165
0,00045
28
Y
0,00017
0,00028
29
Q
0,00015
0,00013
30
X
0,00013
0,00000
L= 4,14834
Mittlere Wortlänge
Mittlerer Informationsgehalt
Redundanz
L = 4,14834 bit
H = 4,11461 bit
R = 0,03373 bit
-> 0,81 %
H= 4,11461 bit
Rechnergrundlagen Teil 1
4.3
- 27 -
Prof.Dipl.-Ing. Komar
Verarbeitungscodierung – numerische und alphanumerische Codes
Numerische Codes können Ziffern und Zahlen darstellen.
Bei einem Wortcode wird eine Zahl als Ganzes codiert und nicht etwa ziffernweise (Dualcode, Graycode)
Bei einem Zifferncode wird dagegen jede Ziffer einer Zahl getrennt codiert ( untercodiert )
Numerische Codes
Wortcodes
bewertbar
Zifferncodes
nicht bewertbar
Anordnungscodes
Graycode
Dualcode
bewertbar
nicht bewertbar
Anordnungscodes
n-aus-m-Codes
8421-BCD
Wortcodes haben den Nachteil einer aufwendigen Ein/Ausgabe aber den Vorteil von einfach durchführbaren
Rechenoperationen.
Bei Zifferncodes ist die Ein/Ausgabe vergleichsweise einfach, da ziffernweise umcodiert werden kann,
aber dafür sind die Rechenoperationen aufwendiger
Tetradische Codes sind Zifferncodes, die 4 Bit ( Tetrade ) für die Codierung einer Dezimalziffer verwenden.
Da sich mit 4 Bit insgesamt 16 Binärausdrücke bilden lassen, aber nur 10 benötigt werden, lassen sich durch
unterschiedliche Anordnung der 10 Nutzwörtern und der 6 Pseudotetraden die verschiedensten
tetradischen Binärcodes bilden. ( 8-4-2-1-BCD, Aiken-Code, Stiebitz- oder 3-Exzess-Code )
BCD-Codes ( Binär Codierte Dezimalziffer) codieren die 10 Dezimalziffern und lassen sich in bewertbare
Zifferncodes (8-4-2-1-BCD, Aiken-Code, 1-aus-10-Code, BCD-Zählcode ) und Anordnungscodes ( Stiebitzoder 3-Exzess-Code, Libaw-Craig-Code, Ziffernsicherungscode Nr. 3 ) unterteilen.
8-4-2-1-BCD-Code (binary coded decimal-Code)
Der BCD-Code oder dezimal-dualer Code verwendet die ersten zehn der 16 möglichen Kombinationen und hat
die Wertigkeiten 8-4-2-1. Digitale Signale im BCD-Code können leicht in analoge Signale umgesetzt werden,
indem man die einzelnen Tetradenstellen in Form von Spannungen über Bewertungswiderstände einer
Summierstufe zuführt. Der BCD-Code bildet jedoch nicht auf einfache Weise das (B-1)-Komplement, auch
entsteht bei der Addition von zwei Zahlen, deren Summe größer ist als 9, nicht zwangsläufig ein Übertrag, was
die Korrektur aufwendig macht. Wenn gemeinhin vom BCD-Code gesprochen wird, so ist der 8-4-2-1-BCDCode gemeint.
Zugeordnete
Ziffer
0
1
2
3
4
5
6
7
8
9
Wertigkeit
8 4 2 1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Stellenzahl
Bewertbar
Gewicht
Minimaldistanz
Maximaldistanz
Hamming-Distanz
zweier benachbarter
Codewörter
Stetig
Redundanz
8-4-2-1-Code und seine Eigenschaften
:
:
:
:
:
4
Ja
0.. . 3
1
4
: 1. . .4
: Nein
: 0,7
Rechnergrundlagen Teil 1
- 28 -
Prof.Dipl.-Ing. Komar
3-Exzess-Code
Im 3-Exzess-Code ( auch Stiebitz-Code ) sind die Stellen nicht bewertbar, man erhält die von einem Codewort
dargestellte Ziffer, indem man vom entsprechenden BCD-Codewort drei addiert oder subtrahiert. Die ersten und
die letzten drei Codeworte sind Pseudotetraden. Der Code ist symmetrisch und das Komplement einer
Dezimalzahl entsteht damit einfach durch Inversion aller Binärstellen. Bei der Addition ist folgende
Korrekturvorschrift zu beachten: Entsteht kein Übertrag, so muß die Dualzahl 0011 subtrahiert werden; entsteht
ein Übertrag, so muß die Dualzahl 0011 addiert werden.
Es existieren außerdem keine Codeworte, bei denen alle vier Bits den gleichen Signalwert ( 0000, 1111 )
aufweisen, also Codeworte, die leicht durch Störungen ( z.B. Spannungsausfall ) entstehen.
Zugeordnete
Ziffer
Wertigkeit
---0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
Stellenzahl
Bewertbar
Gewicht
Minimaldistanz
Maximaldistanz
Hamming-Distanz
zweier benachbarter
Codewörter
Stetig
Redundanz
: 4
: Nein
: 1. .3
: 1
: 4
: 1 .. 4
: Nein
: 0,7
Stiebitz-Code oder 3-Exzess-Code
Aiken- Code
Beim Aiken-Code liegen die Pseudotetraden in der Mitte des mit vier Bits darstellbaren Zahlenbereichs. Der
Code ist symmetrisch, da nur die ersten und die letzten fünf Tetraden verwendet werden. Das Komplement läßt
sich einfach durch Invertierung sämtlicher Bits bilden. Die Korrekturvorschrift ist etwas komplizierter als im 3Exzess-Code, dafür sind die Stellen mit 2-4-2-1 bewertbar.
Zugeordnete
Ziffer
0
1
2
3
4
5
6
7
8
9
Wertigkeit
2 4 2 1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Stellenzahl
Bewertbar
Gewicht
Minimaldistanz
Maximaldistanz
Hamming-Distanz
zweier benachbarter
Codewörter
Stetig
Redundanz
: 4
: Ja
: 0. .4
: 1
: 4
: 1. .4
: Nein
: 0,7
Aiken-Code
Der Ziffernsicherungscode Nr. 3 ist ein sogn. gleichgewichteter 3-aus-5-Code, bei dem alle 5-Bit-Nutzwörter
dieselbe Anzahl von Einsen enthalten, also das gleiche Gewicht haben.
Solche m-aus-n-Codes sind besonders einfache auf Fehler prüfbar und werden als fehlererkennbare Codes
bezeichnet
Rechnergrundlagen Teil 1
Zugeordnete
Ziffer
0
1
2
3
4
5
6
7
8
9
- 29 -
Prof.Dipl.-Ing. Komar
Wertigkeit
- - - - 01011
11100
11010
11001
10110
10101
10011
00111
01110
01101
Stellenzahl
Bewertbar
Gewicht
Minimaldistanz
Maximaldistanz
Hamming-Distanz
zweier benachbarter
Codewörter
Stetig
Redundanz
:5
: Nein
:3
:2
:4
: 2 .... 4
: Nein
: 1,7
Ziffernsicherungscode Nr.3
Der Libaw-Craig-Code eignet sich auf Grund seiner gleitenden Bitmuster für Zähler mit Schieberegistern.
Zugeordnete
Ziffer
0
1
2
3
4
5
6
7
8
9
Wertigkeit
- - - - 00000
00001
00011
00111
01111
11111
11110
11100
11000
10000
Stellenzahl
Bewertbar
Gewicht
Minimaldistanz
Maximaldistanz
Hamming-Distanz
zweier benachbarter
Codewörter
Stetig
Redundanz
:5
: Nein
: 0. .5
:1
:5
:1
: Ja
: 1,7
Libaw-Craig-Code
Gray-Code
Der Graycode ist ein nicht bewertbarer, stetiger und einschrittiger Wortcode, bei dem die Hamming-Distanz
zwischen benachbarten Codewörtern konstant 1 ist.
Dezimalzahl
Dualcode
Graycode
Bildungsgesetzmäßigkeit
0
1
00000
00001
0
1
2
3
00010
00011
11
10
4
5
6
7
00100
00101
00110
00111
110
111
101
100
8
9
10
11
12
13
14
15
01000
01001
01010
01011
01100
01101
01110
01111
1100
1101
1111
1110
1010
1011
1001
1000
16
17
10000
10001
11000
11001
Rechnergrundlagen Teil 1
- 30 -
Prof.Dipl.-Ing. Komar
Derartige stetige und einschrittige Codes werden häufig für die Analog-Digital-Umsetzung gebraucht, da bei
diesen Codes beim Übergang von einem Codewort zum nächsten in den Zwischenstellungen keine falschen
Codewörter entstehen können, denn es verändert sich beim Übergang ja immer nur ein einziges Bit .
Beim Codelineal (Wegstreckenbestimmung) und bei Codescheiben ( Winkelbestimmung ) sind diese
Eigenschaften gut erkennbar.
Codelineal
2
3 4
Codelineal
2
3 4
Gray-Code
5 6 7 8 9 10 11 12 13
Dual-Code
5 6 7 8 9 10 11 12 13
Alphanumerische Codes
Um alphanumerische Zeichen, d.h. Buchstaben, Ziffern, Satz- und Sonderzeichen, zu codieren, sind einige sehr
spezielle Codes entwickelt worden. Zur Darstellung werden dabei natürlich mehr als vier Bits benötigt, da ja
viel mehr Zeichen zu codieren sind. Sollen z.B. die zehn Ziffern und die 26 Buchstaben des Alphabetes, sowie
15 Satz- und sonstige Zeichen verschlüsselt werden, so werden 51 Binärkombinationen, also 6 Binärstellen
benötigt.
Zur Codierung von alphanumerischen Zeichen verwendet man heute vorwiegend folgende national bzw. international genormte Codes fester Wortlänge:
1. Fernschreibcode CCITT Nr. 2 oder
5-SpurlochstreifenCode ( Wortlänge n=5 )
2. CCITT Nr. 5-Code, ASCII-Code ( American Standard Code for Information Interchange ),
ISO-7-Bit-Code ( Wortlänge n = 7 )
3. EBCDIC-Code ( Wortlänge n = 8 )
Weiterhin gibt es noch einen Unicode ( 16 Bit ) (www.unicode.org ), der alle wesentlichen, und den UCSCode ( 32 Bit ), der alle auf der ganzen Welt vorkommenden Schriftzeichen codiert.
(der Unicode wird bei Java zugrundegelegt )
Der 5-Spurlochstreifencode CCITT Nr. 2 ( Baudot-Code ) wurde bereits im Jahr 1932 genormt. Er wird zur
Nachrichtenübermittlung in Fernschreibnetzen benutzt.
Da nur 5 Spuren ( Wortlänge n = 5 ) vorhanden sind, können eigentlich nur 25 = 32 Binärkombinationen
gebildet werden. Dies ist jedoch für die Codierung von Zahlen und Buchstaben nicht ausreichend. Man ordnet
deshalb jeder Binärkombination zwei Zeichen zu und spricht von einer Doppelbelegung. Da häufig Gruppen von
Buchstaben oder von Ziffern vorkommen, führt man einen Umschaltbefehl ein, der festlegt, ob es sich bei den
folgenden Kombinationen um Buchstaben ( Bu = 11111 ) oder Ziffern ( Zi = 11011 ) handelt.
Die Interpretation der einzelnen Binärworte hängt von ihrer Vorgeschichte, dem zuletzt gegebenen Umschaltzeichen, ab. Mit der Doppelbelegung ist es möglich, über 50 verschiedene Zeichen darzustellen.
Der Fernschreibcode hat den Nachteil, daß Fehler bei der Übertragung der Umschaltzeichen die gesamte
Zeichenfolge bis zum folgenden Umschaltzeichen beeinflussen.
Rechnergrundlagen Teil 1
- 31 -
Prof.Dipl.-Ing. Komar
ASCII-Code, ISO-7-Bit-Code ( International Organisation for Standardisation ) oder CCITT-Code Nr. 5.
Diese drei Codes sind bis auf einzelne, durch nationale Bedürfnisse bedingte Festlegungen, identisch.
Der ASCII-Code ist der am weitesten verbreitete alphanumerische Code. Mit 7 Bit lassen sich 128 Zeichen
codieren, wobei bestimmte Binärkombinationen nach nationalem Bedarf festgelegt werden können.
Die Erweiterungen auf 8-Bit-ASCII ( 256 Zeichen ) sind nicht genormt und werden von den Herstellern
unterschiedlich belegt. Durch den PC wurde die IBM-Erweiterung zum Quasistandard.
In Europa wird häufig die ASCII-Erweiterung Latin-1 verwendet ( Norm ISO 8859-1 8 Bit-Code )
Der Großbuchstabe A wird im ASCII-Code z.B. als 4116 verschlüsselt. Die Sonderzeichen werden zur
Übertragungssteuerung ( ACK, DLE, ..), zur Formatsteuerung ( BS, CR, ..), zur Gerätesteuerung ( DC 1,
DC2, ..), zur Informationstrennung ( FS, GS, ..) und zur Code-Erweiterung ( ESC, SI,..) eingesetzt. Einige
Zeichen lassen sich keiner der genannten Gruppe zuordnen ( BEL, CAN, ..). Die Sonderzeichen haben im
einzelnen die folgenden Bedeutungen:
ACK
BEL
BS
CAN
CR
DC
DEL
DLE
EM
ENQ
EOT
ESC
ETB
ETX
FF
FS
GS
HAT
LF
NAK
NUL
RS
SI
SO
SOH
SP
STX
SUB
SYN
US
VT
Positive Rückmeldung (Acknowledge),
Klingel (Bell),
Rückwärtsschritt (Backspace),
Ungültig (Cancel),
Wagenrücklauf (Carriage Return),
Gerätesteuerzeichen (Device Control Characters),
Löschen (Delete),
Datenübertragungsumschaltung (Data Link Escape),
Ende der Aufzeichnung (End of Medium),
Stationsaufforderung (Enquiry),
Ende der Ubertragung (End of Transmission),
Code-Umschaltung (Escape),
Ende des Datenübertragungsblocks (End of Transmission Block),
Ende des Textes (End of Text),
Formularvorschub (Form Feed),
Hauptgruppen-Trennzeichen (File Separator),
Gruppen-Trennzeichen (Group Separator),
Horizontal-Tabulator (Horizontal Tabulation),
Zeilenvorschub (Line Feed),
Negative Rückmeldung (Negative Acknowledge),
Füllzeichen (Null),
Untergruppen-Trennzeichen (Record Separator),
Rückschaltung (Shift-in),
Dauerumschaltung (Shift-out),
Anfang des Kopfes (Start of Reading),
Zwischenraum (Space),
Anfang des Textes (Start of Text),
Substitutionszeichen (Substitute Character),
Synchronisierung (Synchronous Idle),
Teilgruppen-Trennzeichen (Unit Separator),
Vertikal-Tabulator (Vertical Tabulation).
HEX
0
1
2
3
4
HEX
BIN
0000
0001
0010
0
1
2
3
0000
0001
0010
0011
NUL
SOH
STX
ETX
DLE
DC1
DC2
DC3
SP
!
"
#
0
1
2
3
4
5
6
7
0100
0101
0110
0111
EOT
ENQ
ACK
BEL
DC4
NAK
SYN
ETB
$
%
&
'
8
9
A
B
1000
1001
1010
1011
BS
HT
LF
VT
CAN
EM
SUB
ESC
(
)
*
+
C
D
E
F
1100
1101
1110
1111
FF
CR
SO
SI
FS
GS
RS
US
,
.
/
niederwertiges
Halbbyte
0011 0100
5
6
7
0101
0110
0111
@
A
B
C
P
Q
R
S
`
a
b
c
p
q
r
s
4
5
6
7
D
E
F
G
T
U
V
W
d
e
f
g
t
u
v
w
8
9
:
;
H
I
J
K
X
Y
Z
[
h
i
j
k
x
y
z
{
L
M
N
O
\
]
1
m
n
o
|
}
~
DEL
<
=
>
?
_
ASCII-Code, 7-Bit-Code nach DIN 66003
höherwertiges
Halbbyte
(Beispiel: 6 => 0011 01102 = 3616 )
Rechnergrundlagen Teil 1
DezimalWert
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
127
- 32 -
Prof.Dipl.-Ing. Komar
HexCode
ASCIIZeichen
englisch
Bedeutung
deutsch
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
7F
NUL
S0H
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
SP
DEL
Null
Start of Heading
Start of Text
End of Text
End of Transmission
Enquiry
Acknowledge
Bell
Backspace
Horizontal Tabulation
Line Feed
Vertical Tabulation
Form Feed
Carriage Return
Shift Out
Shift In
Data Link Espace
Device Control 1
Device Control 2
Device Control 3
Device Control 4
Negative Acknowledge
Synchronous Idle
End of Transmission Block
Cancel
End of Medium
Substitute
Escape
File Separator
Group Separator
Record Separator
Unit Separator
Space
Delete
Füllzeichen
Anfang des Kopfes
Anfang des Textes
Ende des Textes
Ende der Übertragung
Stationsaufforderung
Positive Rückmeldung
Klingel
Rückwärtsschritt
Horizontal-Tabulator
Zeilenvorschub
Vertikal-Tabulator
Formularvorschub
Wagenrücklauf
Dauerumschaltung
Rückschaltung
Datenübertragung-Umschaltung
Gerätesteuerung 1 ( XON )
Gerätesteuerung 2
Gerätesteuerung 3 ( XOFF )
Gerätesteuerung 4
Negative Rückmeldung
Synchronisierung
Ende des Übertragungs-Blocks
Ungültig machen
Ende der Aufzeichnung
Substitution
Umschaltung
Hauptgruppen-Trennung
Gruppen-Trennung
Untergruppen-Trennung
Teilgruppen-Trennung
Zwischenraum, Leerschritt
Löschen
Bedeutung der Sonderzeichen im ASCII-Code nach DIN 66003
Erweiterter IBM-PC Zeichensatz für Bildschirmausgabe
Rechnergrundlagen Teil 1
- 33 -
Prof.Dipl.-Ing. Komar
4.4 Codesicherung ( Kanalcodierung )
Bei der Übertragung oder Speicherung von binären Daten können Störeinflüsse das binäre Signal so verändern,
( 0/1 – Vertauschung ), daß es zu einer falschen Zuordnung kommt.
Grundbegriffe und Definitionen
Ein Einzelfehler liegt vor, wenn in einem Wort nur eine Bitstelle gestört ist.
Ein Doppelfehler liegt vor, wenn in einem Wort zwei Bitstellen gestört sind.
Bei Fehlerbündeln werden mehrere aufeinanderfolgende Bit eines Wortes bzw mehrerer Worte einer
Nachricht gestört
Das Gewicht eines Codewortes ist die Anzahl der mit 1 belegten Stellen
Bei gleichgewichteten Codes enthalten alle Codewörter die gleiche Anzahl von Einsen.
Ein Sonderfall des Doppelfehlers ist die Transposition. Dabei bleibt das Gewicht des Codes erhalten,
da die Vertauschung von 1 und 0 durch eine entgegengesetzte Änderung einer anderen Binärstelle
von 0 nach 1 wieder aufgehoben wird.
Wenn im statistischen Mittel gleich viele 1 -> 0 - wie 0-> 1 Vertauschungen auftreten, so spricht man
von einer symmetrischen Störung.
Bei Bevorzugung einer Störungsrichtung spricht man von einer unsymmetrischen Störung.
Treten Störungen immer derart auf, daß ein Zeichentyp verändert wird (z.B. 0 in 1), spricht man von
einseitiger Störung.
Ein vollständiger Code hat die Redundanz R =0, d.h. es sind alle möglichen Bitkombinationen benutzt.
Vollständige Codes sind naturgemäß sehr anfällig gegen Störungen und bieten keinerlei Möglichkeit zur Fehlererkennung.
Bei einem unvollständigen Code sind demzufolge nicht alle Bitkombinationen benutzt, also R> 0 (BCDCode).
Um eine größere Datensicherheit zu erreichen, wählt man bewußt eine redundante Codierung, d.h. durch Vergrößerung der Stellenzahl eines Wortes läßt man eine Anzahl zusätzlicher und eigentlich überflüssiger Wörter
zu. Diese Codewörter nennt man Fehlerwörter oder Pseudowörter.
Die tatsächlich informationstragenden Codewörter nennt man im Unterschied dazu Nutzwörter.
Da bei der Codesicherung meist mit festen Wortlängen gearbeitet wird, ergibt sich in diesem Fall für die
Redundanz R ( gleichlange Codewörter ) :
R = L - ld n = L – ld E
n = Anzahl der Nutzwörter
L = Wortlänge oder Anzahl d. Binärstellen
E = Elementarvorrat ld E = H 0
Fehlererkennende und fehlerkorrigierende Codes beruhen darauf, daß Störungen auf ein Fehlerwort führen.
Nur dann sind Fehler erkennbar und gegebenenfalls korrigierbar.
Als notwendige aber nicht hinreichende Bedingung für Fehlererkennung und -korrektur gilt für die Redundanz
um
um
Fehler einer Bitstelle zu erkennen
Fehler einer Bitstelle zu korrigieren
R> 1
R> 2
Bitfehlerwahrscheinlichkeiten einiger leitungsgebundener Übertragungskanäle
Bei einer Bitfehlerwahrscheinlichkeit p ergibt sich die Wahrscheinlichkeit, dass in einem übertragenen Block
der Länge n ( Nutz- und Prüfdaten ) s Bit fehlerhaft sind:
ps =
n 
  * Ps * ( 1 – p ) n-2
s 
Rechnergrundlagen Teil 1
- 34 -
Prof.Dipl.-Ing. Komar
Wahrscheinlichkeiten für Übertragungsfehler von s Bit bei einer Bitfehlerwahrscheinlichkeit p = 10 -6
und einer Nachrichtenlänge von n
Hamming-Distanz
Die Hamming-Distanz D zweier Codewörter (auch Stellendistanz ) entspricht der Anzahl der Binärstellen,
die sich in diesen beiden Codewörtern (Nutzwörtern) unterscheiden.
Die Hamming-Distanz d eines Codes ist das Minimum der paarweisen Hamming-Distanzen D aller seiner
Nutzwörter ( auch Minimaldistanz oder Mindestdistanz ).
Die Hamming-Distanz d (als minimale paarweise Stellendistanz eines Codes) ist ein Maß für die
Störsicherheit eines Codes und damit die maßgebliche Größe für die Möglichkeiten der Fehlererkennung und
Fehlerkorrektur.
Ein Code hat offensichtlich mindestens die Hamming-Distanz d = 1, da sonst zwei Codewörter übereinstimmen
würden.
Beispiel: Ziffern 1 bis 4 in binärer Codierung 1 = 001; 2 = 010; 3 = 011; 4 = 100
Man erhält daraus folgende Stellendistanzen D von je zwei Code-Wörtern
D ( 010, 001 ) = 2
D ( 011, 001 ) = 1
D ( 100, 001 ) = 2
D ( 011, 010 ) = 1
D ( 100, 010 ) = 2
D ( 100, 011 ) = 3
Dies läßt sich durch folgendes Matrix-Schema formalisieren :
D
001
010
011
100
001
010
011
100
2
1
2
1
2
3
-
Damit ergibt sich als kleinste Stellendistanz Dmin für die Hamming-Distanz d = 1 . Mit d = 1 lassen sich
Fehler nicht in jedem Fall erkennen, da es offenbar Nutzwörter gibt, zwischen denen keine Fehlerwörter liegen.
Die Ermittlung der Hamming-Distanz d erfordert bei n Code-Wörtern (n2 – n) / 2 Vergleichsoperationen
Aufgabe: Für obiges Beispiel eine Codierung entwickeln, die bei gleicher Wortlänge die HammingMinimal-Distanz d = 2 aufweist.
Aufgabe: Wieviel Symbole lassen sich mit 3 Bit und einer Minimaldistanz d = 3 codieren ?
und mit welchen Nutzwörtern ?
Rechnergrundlagen Teil 1
- 35 -
Prof.Dipl.-Ing. Komar
101
111
001
011
100
110
000
010
Würfel mit den 8 binären Codewörtern, die sich aus 3 binären Stellen bilden lassen
Die Hammingdistanz D ( Stellendistanz ) zweier Codeworte kann man mit Geraden anschaulich darstellen.
D
= 2
Nutzwort
D = 3
Nutzwort
Einzelfehler erkennbar
Fehlerwort
Nutzwort
Doppelfehler erkennbar
Einzelfehler korrigierbar
Fehlerworte
Nutzwort
Korrekturbereich
D = 4
Nutzwort
D = 5
Nutzwort
Dreifachfehler erkennbar
Einzelfehler korrigierbar
Fehlerworte
Nutzwort
Vierfachfehler erkennbar
Doppelfehler korrigierbar
Fehlerworte
Hamming-Distanz
Nutzwort
Rechnergrundlagen Teil 1
- 36 -
Prof.Dipl.-Ing. Komar
Bei einer Hamming-Distanz von d = 2 paßt zwischen zwei Nutzwörtern noch ein Fehlerwort
Durch einen Einzelfehler gelangt man von einem Nutzwort zu einem Fehlerwort (ein Fehler erkennbar ),
erst bei einem zweiten Fehler wieder zu einem Nutzwort ( beide Fehler nicht mehr erkennbar ).
Da das Fehlerwort von beiden Nutzworten gleich weit entfernt ist, ist nicht erkennbar, aus welchem Nutzwort
es durch einen Fehler entstanden ist ( keine Korrektur möglich).
Beim Walking-Code ( 2 aus 5 ) [ Seite 35] beträgt die Hamming- oder Minimaldistanz d = 2 und damit ist nur
ein Einzelfehler sicher erkennbar.
Bei d = 3 liegen zwischen zwei Nutzworten 2 Fehlerworte. Bei einem Fehler ist eindeutig entscheidbar, aus
welchem Nutzwort dieses Fehlerwort entstanden ist ( ein Fehler korrigierbar ).
Zwei Fehler sind zwar noch erkennbar, aber nicht korrigierbar, da dann das Fehlerwort auch durch einen
Fehler aus dem anderen Nutzwort entstanden sein kann.
Erst bei d = 5 erhöht sich die Anzahl der korrigierbaren Fehler wieder.
Will man Fk Fehler korrigieren, so benötigt man mindestens eine Hammingdistanz d > 2 Fk + 1,
Denn nur in diesem Fall sind die Nutzwörter so weit „voneinander entfernt“, daß selbst bei F Störungen
das orginale Nutzwort noch „näher“ liegt als alle anderen Nutzwörter und daher eindeutig bestimmt
werden kann.
Soll ein Code bis zu Fk Fehler korrigieren und bis zu Fe > Fk erkennen (ohne zu korrigieren) so muß die
Hammingdistanz d > Fe + Fk + 1 sein.
Allgemein gilt
Femin = d - 1
Fkmin =
d −1
2
Femin = Mindestzahl der erkennbaren Fehler
d = Mindestdistanz der Nutzwörter
falls d ungerade
Fkmin = Mindestzahl der korrigierbaren Fehler
Fkmin =
Hammingdistanz d
1
2
3
4
5
d −2
2
falls d gerade
Möglichkeiten der Fehlerminderung
Eindeutigkeit
Einzelfehlererkennung
Einzelfehlerkorrektur oder Doppelfehlererkennung
Einzelfehlerkorrektur und Doppelfehlererkennung oder Dreifachfehlererkennung
Doppelfehlerkorrektur oder Vierfachfehlererkennung
Die Minimaldistanz d ist sozusagen die “schwächste Stelle“ im Code, der ungünstigste Fall (worst case ).
Wohingegen an den Distanzen D > d die Verhältnisse für eine Fehlerminderung günstiger sind.
Oder anders ausgedrückt, zwischen den jeweiligen Codewörtern mit D lassen sich eben mehr Fehler korrigieren
/erkennen als an der schwächsten Stelle d .
Beispiel: 1 Informationsbit werde durch 3 zusätzliche Prüfbit wie folgt gesichert:
0 000
1 111
H = 1 bit
L = 4 bit
R = 3 bit
d=4
Wird 0100 empfangen, so kann der 1-Bit-Fehler erkannt und korrigiert werden
(wenn es aber auch ein Dreifachfehler sein könnte, dann nur
Erkennung möglich, aber nicht ob 1- oder 3-Bit-Fehler vorliegt )
Wird 0101 empfangen, so kann ein Doppelfehler als solcher erkannt, aber nicht
korrigiert werden.
Aufgabe: Wieviel Fehler können bei einem Code mit Redundanz R = 3 korrigiert oder erkannt werden ?
Rechnergrundlagen Teil 1
- 37 -
Prof.Dipl.-Ing. Komar
4.4.1 Fehlererkennung
Einfachste Art: Wiederholen einer Datenübertragung : der Sender sendet die Information zweimal
nacheinander und der Empfänger vergleicht.
Verdoppelt die Wortlänge des Codes und erhöht stark die Redundanz
Handshake-Verfahren : der Sender wartet, daß der Empfänger das gleiche Wort zurückschickt
Bei einem Fehler wiederholt der Sender das Wort
Nachteil: bei beiden Verfahren werden einseitige oder unsymmetrische Störungen nicht erkannt.
Invertierte Wiederholung vermeidet diesen Nachteil dadurch, daß der Sender beim zweiten
Mal alle Bits invertiert sendet.
Eine einseitige Störung auf der Übertragungsleitung macht sich bei der Wiederholung umgekehrt
bemerkbar und ist daher erkennbar.
Der größte Nachteil der Nachrichtenwiederholung ist aber, daß doppelt so viele binäre Daten übertragen werden
müssen als notwendig.
Fehlererkennung durch Quersummenprüfung ( Paritätsprüfung )
Das üblichere Verfahren bei der Datenübertragung ist die Quersummenprüfung. Dem Nutzwort wird ein
Prüfbit hinzugefügt, welches die Anzahl der Einsen im Nutzwort auf eine gerade oder ungerade ( even oder
odd ) Anzahl ergänzt.
Dieses Prüfbit wird Paritätsbit ( parity bit )genannt.
Ob gerade oder ungerade Parität verwendet wird, muß natürlich zwischen Sender und Empfänger vereinbart
werden. Der Sender erzeugt das Prüfbit und hängt es an die Nachricht an. Es werden also statt 8 Bit jetzt 9 Bit
übertragen. Diese 9 Bit werden vom Empfänger auf die vereinbarte Parität überprüft. Ist bei der Übertragung
eine Bitstelle verfälscht worden, so kann der Empfänger dies erkennen.
Fehler in zwei Bitstellen (bzw alle geraden Fehlerzahlen) verändern die Parität nicht, sind also nicht
erkennbar. Mehrfachfehler mit ungeraden Fehlerzahlen werden hingegen aufgedeckt.
Diese Methode des Anhängens eines Paritätsbit erhöht die Hamming-Distanz d um 1 und auch die
Redundanz um 1 bit.
Die Schaltungen, die zur Erzeugung und Überprüfung der Parität erforderlich sind, sind heute meist in den
Treiberbausteinen für die Übertragungsstrecke mit eingebaut, so daß kaum Mehraufwand erforderlich ist.
( Kann verhältnismäßig einfach durch Exklusiv-Oder -Verknüpfungen XOR bestimmt werden )
Dies hat die Paritätsprüfung zur meistverwendeten Methode zur Fehlererkennung gemacht.
Beispiele:
Fehlererkennung durch Paritätsprüfung
Nutzwort
gerade Parität:
ungerade Parität:
10101110
01100011
Erzeugung und Überprüfung eines Paritätsbits
ergänztes
Paritätsbit
1
1
Anzahl der
Einsen
6 = gerade
5 = ungerade
Rechnergrundlagen Teil 1
- 38 -
Prof.Dipl.-Ing. Komar
Sicherung des 8421-BCD-Codes durch gerade Parität
Dez.Ziffer
0
1
2
3
4
5
6
7
8
9
BCD-Code
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Par.Bit
0
1
1
0
1
0
0
1
1
0
4.4.2 Fehlererkennung durch gleichgewichtete Codes ( m-aus-n- Codes )
Gleichgewichtete Codes sind Blockcodes mit der Wortlänge n und enthalten in jedem Codewort eine konstante
Anzahl von m Einsen und dementsprechend n-m Nullen. Die maximale Anzahl der damit erzeugbaren
verschiedenen Codewörter k ergibt sich zu
n 
n!
 =
m!(n − m)!
m 
k = 
m<n
m = Anzahl der Einsen im Codewort
n = Anzahl der Bitstellen des Codewortes
n! = l *2*3*... *n.
0! = 1
Mit dem pascalschen Dreieck kann man sich die erzeugbaren Codewörter k leicht ausrechnen.
m
n
0
1
0
2
1
1
1
2
1
1
3
1
4
1
5
1
6
1
7
1
4
6
15
21
1
3
10
6
7
2
3
5
3
10
1
5
15
35
5
1
4
20
35
4
6
7
1
6
21
1
7
1
Pascalsches Dreieck für k
Da in allen Codewörtern dieselbe Anzahl von Einsen enthalten sind, müssen sich zwei verschiedene CodeWörter in mindestens zwei Stellen unterscheiden, so daß bei m-aus-n-Codes die Hamming-Distanz d=2 ist.
Damit sind 1-Bit-Fehler immer erkennbar, jedoch nicht in jedem Fall korrigierbar.
Beispiel: Der 2 aus 5 Code ( Walking-Code ) ist ein 5-Bit-Code zur Darstellung der Dezimalziffern, bei dem
jedes Codewort 2 Einsen besitzt. Die Codewörter besitzen demnach alle das Gewicht 2.
Beim 1-aus-10-Code besitzen alle Codewörter das Gewicht 1.
n 
5 
 =   = 10
m 
2 
Walking-Code k = 
 n   10 
 =   = 10
m   1 
1-aus-10-Code k = 
Rechnergrundlagen Teil 1
- 39 Walking-Code
Dezimalcode
00011
00101
00110
01010
01100
10100
11000
01001
10001
10010
0
1
2
3
4
5
6
7
8
9
Prof.Dipl.-Ing. Komar
1-aus-10-Code
0000000001
0000000010
0000000100
0000001000
0000010000
0000100000
0001000000
0010000000
0100000000
1000000000
Bei allen m-aus-n-Codes ist eine Fehlerüberprüfung durch Gewichtsprüfung, d.h. Prüfung der Anzahl der
Einsen leicht möglich. Der 1-aus-10-Code weist eine sehr hohe Redundanz auf.
4.4.3 Fehlererkennung und Fehlerkorrektur mit systematischer Codierung
Bei den m-aus–n-Codes ist die Zuordnung von Codewort zum kodierten Wert willkürlich. Eine Unterscheidung
zwischen Prüfstellen und informationstragender Binärstelle ist bei derartigen unsystematischen Codes nicht
möglich.
Ein Code, bei dem zwischen Informationsbit x1, x2, ..., xm und den Prüfbit p1, p2,...., pk unterschieden werden
kann, wird als systematischer Code bezeichnet.
Die Aufgabe besteht darin, einen Code zu konstruieren, bei dem bis zu e Bit-Fehler pro Codewort korrigierbar
sein sollen., d.h. man muß einen Code mit vorgegebener Hammingdistanz d erzeugen.
Man bezeichnet diese Codes auch als Lineare Codes, weil sie eine geometrische Veranschaulichung in sogn.
Vektorräumen ermöglichen.
Die bekannteste spezielle Lösung dieses Problems sind die Hamming-Codes, bei denen für die Codierung von
n-stelligen Codewörtern k Prüfpositionen eingeführt werden , so daß m = n – k Bits für die eigentliche
Information verbleiben.
Die Idee dazu ist, daß die direkte binäre Codierung der Bits an den Prüfpositionen die Fehlerposition angeben
soll und daß für eine fehlerfreie Übertragung alle Bits der Prüfpositionen den Wert 0 haben sollen.
Die Hamming-Grenze gibt die Mindestanzahl der Prüfstellen k an, um in n-stelligen Codewörtern die
Korrektur bis zu e Fehlerstellen zu erlauben
k > ld
e
n
j =0
j
∑(
) = ld
e
n!
∑ j!(n − j )!
e = 1, n = 3, kmin = 2
j =0
e = 2, n = 3, kmin = ld 7 = 2,8
4.4.4 Fehlerkorrektur mit Hamming Codes
Die Hamming-Codes sind die bekanntesten Ein-Fehler-korrigierenden Codes mit besonders geringer
Redundanz und erlauben die Korrektur von einer fehlerhaften Bitposition in einem Block.
Diese Codes verwenden für m Informationsbit eine bestimmte Anzahl k Prüfbit. Jedes dieser Prüfbit
bildet die gerade Parität über eine gewisse Anzahl von Informationsbit.
Man unterscheidet die informationstragenden Stellen x1, x2, ....., xm und die nur zu Prüfzwecken dienenden
Stellen p1, p2, ....,pk Der Code besitzt also
n = m + k
Stellen, mit
m = Anzahl der Informationsbits
k = Anzahl der Prüfbits
n = Gesamtzahl der Bits
Rechnergrundlagen Teil 1
- 40 -
Prof.Dipl.-Ing. Komar
Hamming: Theoretische untere Schranke der Prüfbits k für die Korrektur von Einzelfehlern e = 1 .
Durch k Prüfstellen können 2k Tatbestände gekennzeichnet werden.
Man muß n + 1 Tatbestände feststellen können, nämlich ob das betreffende Codewort ( Prüf- und
Informationsbits ) fehlerfrei ist oder welche der n = m + k Bitstellen gestört ist.
Damit muß für die Anzahl k der Prüfbit gelten:
2k ≥ m + k + 1
mit k = Prüfbitzahl
und
m = Informationsbitzahl
Tabelle mit Maximalzahlen der überprüfbaren Informationsbit m für Korrektur eines Einzelfehlers
k
m
1
2
3
4
5
6
0
1
<
<
<
<
4
11
26
57
Mit steigender Anzahl von Informationsstellen sinkt der prozentuale Anteil an Prüfstellen.
Konstruktionsschritte eines Hamming-Codes ( 1-F-korrigierbarer Code )
1.
2.
3.
4.
Die n Bits des Codewortes werden mit 1 beginnend von links nach rechts durchnummeriert ( bj , j =1..n )
Jene Bits, deren bj-Nummern Potenzen von 2 sind, also 1, 2, 4, 8, 16, 32,... usw , sind Prüfbits pi .
Die restlichen also 3, 5, 6, 7, 9, 10,... usw sind Informationsbit xi .
Jedes Prüfbit ist ein Parity-Bit auf gerade Parität für eine bestimmte Anzahl von Informationsbit.
Ein Informationsbit kann in die Berechnungen verschiedener Prüfbit einbezogen sein und zu dieser
Festlegung wird die Nummer j des Informationsbit bj in eine Summe von Zweierpotenzen zerlegt.
Das Informationsbit bj mit der Nummer j liefert dann zu all jenen Prüfbits bj einen Beitrag, deren Nummer
in der Zweierpotenz- (Polynom-) Darstellung von j erscheint.
z.B. j = 29 = 16 + 8 + 4 + 1 d.h.
das Informationsbit b29 wird in die Paritätsbildung für die Prüfbit bj mit den Nummern j = 16, 8, 4 und 1
einbezogen.
5. Das Codewort, bestehend aus Informations- und Prüfbits wird gesendet.
6. Der Empfänger bildet nach denselben Regeln die Quersumme bzw die gerade Parität für jedes Prüfbit und
vergleicht bitweise mit den empfangenen.
Die Nummer j jedes abweichenden Prüfbits wird summiert und ergibt dadurch automatisch die Nummer
bzw Position des gestörten Bits, das für eine Korrektur nur noch invertiert werden muß.
Diese Fehlerkorrektur schließ die Prüfbits mit ein. Ist ein Prüfbit gestört, so wird auch dieses erkannt und
korrigiert.
Aufbau eines Hamming-Codes mit 7 Daten- und 4 Prüfbits
Rechnergrundlagen Teil 1
- 41 -
Prof.Dipl.-Ing. Komar
Beispiel: Für das 4-Bit-Nutzzeichen x1 = 0, x2 = 1, x3 = 1, x4 = 0 sieht das Hamming’sche Verfahren zur
Korrektur eines Einzelfehlers 3 Prüfbit p1, p2 und p3 ( gerade Parität ) vor.
1. Schritt
Binärstelle
Belegung
2.Schritt
bj
b1
b2
b3
b4
b5
b6
b7
b8 b9 b10
pi ,xi
p1
p2
x1
p3
x2
x3
x4
p4 x5 x6
?
?
0
?
1
1
0
?
1. Stellenbelegung
Bestimmung von p1
3.Schritt
2. Stellenbelegung
Bestimmung von p2
4.Schritt
3. Stellenbelegung
Bestimmung von p3
p1
x1
0
1
p2
1
x2
1
x4
0
x1
0
p3
x2
1
0
x3
1
x4
0
x3
1
x4
0
Konstruktion eines 1-F-korrigierenden Codewortes
Im ersten Schritt werden die 7 Binärstellen mit den Prüf- und Informationsbit belegt
Im zweiten Schritt wird das Prüfbit b1 (p1) durch die Quersummenprüfung der Stellen b3,
b5 und b7 auf gerade Parität festgelegt und zwar im Beispiel zu b1 = 1
oder
p1 = x1 ⊕ x2 ⊕ x4
b1 = b3 ⊕ b5 ⊕ b7 = 0 ⊕ 1 ⊕ 0 = 1
dritter Schritt : b2 = b3 ⊕ b6 ⊕ b7 = 0 ⊕ 1 ⊕ 0 = 1
p2 = x1 ⊕ x3 ⊕ x4
vierter Schritt:
b4 = b5 ⊕ b6 ⊕ b7 = 1 ⊕ 1 ⊕ 0 = 0
p3 = x2 ⊕ x3 ⊕ x4
mit ⊕ = Operation zur Erstellung von Parity-Bits (Addition-modulo-2 ohne Übertrag, Exklusiv-Oder
bzw XOR , Antivalenz )
0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0= 1
1 ⊕ 1= 0
Mit den drei festgelegten Prüfbit p1 = b1 = 1 , p2 = b2 = 1 und p3 = b4 = 0 wird also im
1 1 0 0 1 1 0 übertragen
Hamming-Code das Codewort
Man erkennt, daß jede Informationsstelle durch mindestens zwei Prüfbits kontrolliert wird.
Wird dieses Codewort nun übertragen, so kann der Empfänger durch Quersummenprüfung (auf gerade
Parität) einen Fehler erkennen und korrigieren.
Beispiel für einen Fehler bei der Datenübertragung :
Stelle bj
Belegung
1
p1
2
p2
3
xl
4
p3
5
x2
6
x3
7
x4
Gesendet wird
Empfangen wird
1
1
1
1
0
0
0
0
1
1
1
0
0
0
Bilden der Quersummen über jeweils die drei Info- und das eine Prüfbit , ergibt
Q1 = b1 ⊕ b3 ⊕ b5 ⊕ b7 = 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0
Q2 = b2 ⊕ b3 ⊕ b6 ⊕ b7 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1
Q4 = b4 ⊕ b5 ⊕ b6 ⊕ b7 = 0 ⊕ 1 ⊕ 0 ⊕ 0 = 1
oder
q1 = p1 ⊕ x1 ⊕ x2 ⊕ x4
q2 = p2 ⊕ x1 ⊕ x3 ⊕ x4
q4 = p3 ⊕ x2 ⊕ x3 ⊕ x4
Ist kein Fehler aufgetreten, dann gilt für die 3 Quersummen Q1 = Q2 = Q4 = 0
Rechnergrundlagen Teil 1
- 42 -
Prof.Dipl.-Ing. Komar
An Q2 und Q4 ist erkennbar, daß im Beispiel ein Fehler aufgetreten ist. Die Fehlerposition kann man nun sehr
einfach ermitteln, indem man die Quersummen in der Reihenfolge ihrer Stellenwertigkeit anschreibt ( das
Syndrom bildet ),
( Q4 Q2 Q1 ) = ( 1 1 0 ) 2
und diese Zahl als Dualzahl interpretiert, oder einfach die Nummern der abweichenden Prüfbit (Qx = 1)
aufsummiert.
Im Beispiel ( 110 )2 = 6 10. Somit ist die sechste Bitstelle gestört und kann durch invertieren korrigiert werden.
Beispiel einer Hamming-Codierung mit 7 Daten- und 4 Prüfbits
Aufgabe: Es wird das folgende 10 Bit-Codewort empfangen : 0 1 1 0 0 0 1 1 0 1
Welchen Wert weisen die Nutzbits auf, wenn diese vom Sender nach Hamming 1-F-korrigierend
codiert wurden.?
Rechnergrundlagen Teil 1
- 43 -
Prof.Dipl.-Ing. Komar
4.4.5 Fehlererkennung und – korrektur mit Polynomcodes ( CRC-Codes )
Der “Cyclic Redundancy Check“ (CRC) ist eine sehr verbreitete Methode der Fehlersicherung, die nicht nur
bei Datenübertragungen zwischen verschiedenen Rechnern eine überragende Rolle spielt, sondern auch
innerhalb eines Rechners, z.B. bei Datentransfers mit Festplatten und Disketten, intensiv eingesetzt wird (auch
ECC Error Checking and Correcting genannt ).
Diese zyklischen Gruppencodes (systematische Codes) werden durch ihren hohen Grad an mathematischer
Struktur und die dadurch bedingten vorausberechenbaren fehlererkennenden Eigenschaften in der Praxis häufig
für Codewörter von mehreren hundert Bit eingesetzt, die in einer Tabelle oder einer Matrix nicht mehr zu
übersehen sind. Die CRC-Methode ist somit nicht Bytegebunden und es können damit beliebige serielle
Bitströme abgesichert werden. Die an den Bitstrom angefügten CRC-Bits bilden die sogn. “Frame Check
Sequence“ (FCS) eines Übertragungsblocks.
Ein zyklischer Code ist dadurch definiert, daß man durch zyklische Vertauschung der Stellen eines CodeWortes wieder ein Codewort erhält.
Die Beschreibung zyklischer Codes erfolgt durch Identifikation der Codewörter mit Polynomen, wobei dessen
Koeffizienten die Informationsbit darstellen. D. h. Bitfolgen werden als Polynome interpretiert, deren
Koeffizienten nur aus 0 und 1 bestehen.
Beispiel für die Erzeugung eines binären Polynoms:
Bitstrom:
110101
zugehöriges Polynom I(x): I(x) = l*x5 + l*x4 + 0*x3 + l*x2 + 0*x1 + l*x0
I(x) = x 5 + x 4 + x 2 + 1
Das Prinzip der Fehlererkennung / Fehlerkorrektur
Informations-Bitströme (Codewörter ) werden als binäre Polynome I(x) geschrieben.
Die CRC-Bits ( Prüfpolynom R(x) ) werden so konstruiert, daß das zu sendende abgesicherte Polynom S(x),
welches aus Informationsbits I(x) und CRC-Bits R(x) entstanden ist, ohne Rest durch ein vorher festgelegtes
“Generatorpolynom“ G(x) teilbar ist.
Für die Bildung der abgesicherten Bitfolge (Sendepolynom S(x)) werden dazu die CRC-Prüfbits des Prüf polynoms R(x) an die Infobits des Informationspolynoms I(x) angehängt.
Der Empfänger prüft den eintreffenden Bitstrom, indem er das zugehörige Polynom S(x) erneut durch das
Generatorpolynom G(x) dividiert. Falls sich bei dieser Division ein Rest 0 ergibt, ist kein Fehler aufgetreten.
Aus einem eventuellen Restpolynom können Rückschlüsse auf die verfälschten Bits gezogen werden, so daß
nicht nur Fehler erkennbar, sondern diese auch automatisch korrigierbar sind.
Die Form des Generatorpolynoms G(x) bestimmt dabei das Ausmaß der Fehlererkennung und -korrekter.
Generatorpolynome sind nach bestimmten Regeln aufgebaut und liegen tabelliert vor.
Man verwendet Polynome G(x), die sich als Produkte von Polynomen darstellen lassen, die nicht weiter
zerlegbar sind ( Primpolynome ). Beispiel:
G(x) = 1 + x + x2 + x4 + x5 + x8 + x10 = ( 1 + x + x4 ) (1 + x + x2) ( 1 + x + x2 + x3 + x4 )
Damit lassen sich drei Fehler korrigieren, deren Positionen sich als die Wurzeln der drei Primpolynome ergeben.
Der Grad r des Generatorpolynoms G(x) bestimmt die Anzahl der CRC-Bits und je höher der Grad des
Generatorpolynoms, desto besser ist ein Infobit-Block abgesichert.
Ein vom CCITT vorgeschlagenes "Standard"- Generatorpolynom lautet :
(es fängt alle Einfach und Doppelfehler sowie Fehlerketten der Länge <16
und wird im öffentlichen DATEX-P Netz benutzt )
IBM setzt im BYSYNC-Protokoll zur Datenkommunikation "CRC 16" ein :
G(x) = x16 + x12 + x5 + 1
G(x) = x16 + x15 + x2 + 1
Beim Rechnen im “binären System“ (modulo-2-System, Addition / Subtraktion modulo 2 --> ⊕ = bitweises
XOR ) müssen die folgenden Regeln beachtet werden:
0±0=0
1±0=1
0±1=1
1±1=0
und
" – " entspricht " + "
Rechnergrundlagen Teil 1
- 44 -
Prof.Dipl.-Ing. Komar
Pragmatische Darstellung der Schritte zur Generierung der CRC-Bitfolge:
Beispiel:
gegeben: Generatorpolynom G(x) = xr + .... + 1 ( Grad r )
G(x) = x 3 + x + 1
Informationsbitfolge
r=3
Informationsbits: 1 0 1 0
Schritt 1: I(x) = x 3 + x
1. Bilde binäres Polynom I(x) aus gegebenen Infobits
2. I(x) x r dadurch werden Infobits in den Wertigkeiten um r Bits " nach oben " geschoben und
damit Platz geschaffen für r CRC-Bits
Infobits
0000....0
Schritt 2: I(x) * x 3 = x 6 + x 4
3. Polynom-Division zur Bildung des Prüfpolynoms R (x)
I (x) x r
R (x)
---------- = Q (x) + ---------G (x)
G (x)
=> Rest R (x)
4. Divisionsrest R (x) entspricht den CRC-Bits.
Rückwandlung von R (x) in einen Bitstrom und
diesen an die Infobits anhängen.
S(x) = I (x) xr + R (x)
Schritt 3: ( x 6 + x 4 ) / ( x 3 + x + 1 ) = x 3 + 1
x6+x4+x3
x3
x3+x+1
x + 1 (Rest)
Schritt 4: R (x) = x + 1
Rückwandlung in Bits:
x 2 x 1 x 0 (<= mögliche Potenzen r-1 )
0 1 1
( = CRC )
damit wird das gesamte " Paket" :
Sendepolynom: S(x) = x 6 + x 4 + x + 1
Sende-Bitfolge:
1 0 1 0 0 1 1
Der Empfänger prüft, ob das Polynom des eintreffenden Bitstroms ohne Rest durch G (x) teilbar ist.
Falls bei dieser Division ein Rest auftritt: => Fehler !
Aus der Form des Restpolynoms: => Korrektur der Fehler
Aus der Gleichung bei Schritt 3 folgt für die Polynomdarstellung des gesendeten Bitstroms (incl. CRC):
S (x) = I ( x ) x r + R (x ) = Q (x ) G(x )
D.h. es werden nur solche Pakete verschickt, die (Polynom-) Vielfache von G(x) sind. Daher darf bei der
erneuten Division beim Empfänger kein Rest auftreten!
Beispiel einer CRC-Codierung mit G(x) = x 4 + x + 1
Rechnergrundlagen Teil 1
- 45 -
Prof.Dipl.-Ing. Komar
Die technische Generierung der CRC-Bits kann hardwaremäßig sehr einfach durch rückgekoppelte
Schieberegister realisiert werden.
Die Rückkopplung erfolgt über XOR-Glieder an den vom Generatorpolynom bestimmten Stellen.
Bei einem Generatorpolynom vom Grade r besteht das Schiebergister aus r Bitzellen (FlipFlops). Für jede im
Generatorpolynom auftretende Potenz gibt es einen XOR-gekoppelten Rückkopplungspfad.
Die getaktet eintreffenden Informationsbits gelangen direkt zum Empfänger. Parallel dazu entstehen im
Schieberegister die CRC-Bits, die am Ende des Byteblocks durch Umlegen eines Schalters ausgetaktet, d.h.
"nachgeschoben" werden.
Aufbau eines CRC-Generators mit G(x) = x 16 + x15 + x2 + 1
Literatur zu CRC :
Lochmann Digitale Nachrichtentechnik
Verlag Technik Berlin
H.P.Messmer
PC-Hardwarebuch
Addison-Wesley
Rechnergrundlagen Teil 1
- 46 -
Prof.Dipl.-Ing. Komar
4.4.6 Fehlerminderung mit Blocksicherung
Einfache Blockabsicherung
Ein Block hintereinander liegender Byte wird durch einen “Block Check Character“ (BCC) gesichert. Typische
Blocklängen sind 10..1024 Byte. Das Check-Byte entsteht durch Addition oder durch eine logische XORVerknüpfung ( modulo 2-Addition ohne Übertrag = bitweise Bildung der geraden Parität ) aller Bytes des Blocks
und wird als zusätzliches “Zeichen“ an den Block angehängt ( LRC = longitudinal redundancy check )
Beispiel
Byte-Block (HEX-Notation):
BCC (gebildet durch .... )
(ADD)
(XOR)
03 12 07 4F 30 A4 F1 7C 2B 65
(3) 3C
0E
Beispiel für Bildung des Prüfwortes ( BCC ) durch spaltenweise Bildung der geraden Parität ( XOR )
0 0 1 0
1 0 0 1
0 1 1 1
1 0 1 0
BCC
0 1 1 0 Welche Fehlerminderung ist bei dieser einfachen Blocksicherung möglich?
Falls das beim Empfänger generierte Check-Byte nicht mit dem gesendeten übereinstimmt, fordert der
Empfänger eine Wiederholung der Blocksendung an.
Rechteckcode
( auch Kreuzsicherung )
Eine Verbesserung der Fehlerminderung dieser einfachen Blocksicherung ist durch mehrdimensionalen Schutz
von Bitblöcken möglich.
Dazu versieht man jedes Codewort mit jeweils einem Paritätsbit ( in jeder Zeile die Längsparität =
Longitudinal Redundancy Check LRC ) und bildet dann aus diesen neuen Wörtern einen Block bestimmter
Länge .
Über diesen Block bildet man nun spaltenweise die Parität ( in jeder Spalte die Querparität= Vertical
Redundancy Check VRC ) Das so ermittelte Längsprüfwort wird an das Ende des Blocks gehängt und mit den
Informationen übertragen.
Das Prüfbit in der rechten unteren Ecke des gesamten Blocks wird üblicherweise so gesetzt, daß es die
Anzahl der Einsen im gesamten Daten-Block auf die gewünschte Parität ergänzt
Man findet wegen des rechteckigen Übertragungsschemas in der Literatur dafür auch die Bezeichnung
Rechteck-Codes.
Ein Beispiel hierzu mit gerader Parität ( Block aus 8 Wörtern zu je 7 Bit ):
Codewort
Paritätsbit
101000
001000
101100
101011
001000
111000
001011
0
1
1
0
1
1
1
011100
1
_
1010000
0010001
1011001
1011110
0010001
1110001
0010111
0111001
ungerade
Längsprüfwort
= Spaltenparität
ungerade
gerade Parität
a
b
Blocksicherungsbeispiel
Im Empfänger kann man nun wieder die Zeilen- und Spaltenparität bilden und dadurch die fehlerhafte Bitstelle
im Block lokalisieren. Diese befindet sich nämlich genau im Schnittpunkt der fehlerhaften Spalten- und Zeilenprüfsumme.
Tritt eine Paritätsverletzung nur in der Prüfzeile oder der Prüfspalte auf, aber nicht in beiden gleichzeitig, so ist
der 1-Bit-Fehler im entsprechenden Prüfwort entstanden.
Rechnergrundlagen Teil 1
- 47 -
Prof.Dipl.-Ing. Komar
Ist nur das rechte untere Prüfbit fehlerhaft und weder die Parität der Prüfzeile noch die der Prüfspalte verletzt, so
liegt der Fehler im Prüfbit selbst.
Das obige Beispiel a zeigt die Bildung eines Blockes mit gerader Parität.
Beispiel b zeigt einen fehlerhaften Datenblock. Es ist je eine ungerade Zeilen- und Spaltenparität gefunden
worden. Die 1 im Schnittpunkt muß daher zur Fehlerkorrektur durch eine 0 ersetzt werden.
Die Blocksicherung ist eine einfache und effiziente Methode zur Korrektur von Einzelfehlern. Im Vergleich
mit Hamming-Codes benötigt sie aber mehr Prüfbits.
Im Beispiel beträgt die Anzahl der überprüften Informationsbits, in denen ein Fehler zugelassen wird, m= 42
Hierfür benötigt man beim Hamming-Code k = 6 Prüfbits. Verwendet werden bei der Blocksicherung aber 14
Prüfbits. Wegen der einfachen Überprüfbarkeit ist die Blocksicherung dennoch weit verbreitet, z.B. bei
Sicherung der Daten auf Magnetbändern.
Erzeugung der Kreuzparität
Aufgabe: Wieviel Fehler sind bei einem derartigen Rechteck-Code sicher erkennbar und wieviele korrigierbar ?
Aufgabe: Der folgende Bitstrom werde empfangen: 01010 00110 10110 01001 00011
Auf der Empfangsseite ist bekannt, daß damit eine 4 stellige Dezimalzahl, deren einzelne Ziffern im
3-Exzess-Code codiert sind, mit Blocksicherung (Rechteckcode) in gerader Parität gesichert und
übertragen wird.
Wie lautet diese Zahl ?
Rechnergrundlagen Teil 1
4.4.7
- 48 -
Prof.Dipl.-Ing. Komar
Zeichenverflechtung gegen Bündelfehler
Ein ähnliches Verfahren hat man entwickelt, um Fehlerbündel zu korrigieren. Fehlerbündel stören mehrere
aufeinanderfolgende Bits eines Wortes oder Blockes .
Eine Folge von k aufeinanderfolgenden Codeworten wird in Form einer Matrix angeordnet, und zwar ein
Codewort pro Zeile. Um Fehlerbündel zu korrigieren, sendet man nun die Matrix spaltenweise und nicht wie
üblich Codewort hinter Codewort.Auf Empfängerseite wird die Matrix spaltenweise rekonstruiert. Falls nun ein
Fehlerbündel ( burst ) der Länge k
aufgetreten ist, so ist nicht mehr als ein Bit in jedem der k Codewörter gestört.
Dieses eine Fehlerbit pro Codewort kann dann z.B. durch den Hamming-Code korrigiert werden und damit kann
der gesamte übertragenen Block wiederhergestellt werden.
Übertragung mit Zeichenverflechtung
e5
Ü
b
e
t
r
a
g
u
n
g
a1
b1
c1
d1
e1
a2
b2
c2
d2
e2
a3
b3
c3
d3
e3
a4
b4
c4
d4
e4
a5
b5
c5
d5
e5
d5 c5
Senden
b5
a5
e4
d4
a1
b1
c1
Bündel-Störung
a1
b1
c1
d1
e1
a2
b2
c2
d2
e2
a3
b3
c3
d3
e3
a4
b4
c4
d4
e4
a5
b5
c5
d5
e5
Empfangen
c4
b4
a4
e3
d3
c3
b3 gestörte
a3 aufeinandere2 folgende
d2 Bits
c2
b2
a2
e1
d1
Rechnergrundlagen Teil 1
- 49 -
Prof.Dipl.-Ing. Komar
5. Zahlensysteme
Polyadische Zahlensysteme sind Zahlensysteme mit Stellenschreibweise, wobei zusätzlich die einzelnen
Stellenwerte nach einem exponentiellen Bildungsgesetz gestuft sind:
( in einem polyadisches Zahlensystem mit der Basis B wird die Zahl Z nach Potenzen von B zerlegt )
n −1
Z =
∑
a ∈ ( 0, B – 1 )
ai Bi
i =− m
mit
B = Basis des Zahlensystems
a = Wert des Symbols an der Stelle i bzw Ziffer der Zahl
n = Anzahl der ganzen Stellen
m = Anzahl der Stellen hinter dem Komma
Anzahl der Ziffern des Zahlensystems = B
Höchster Ziffernwert = B – 1
Zu diesen polyadischen Systemen gehören die technisch interessanten Zahlensysteme Dezimal – Dual –
Sedezimal. Das Sedezimalsystem wird auch als Hexadezimalsystem bezeichnet.
Dualsystem
Oktalsystem
Dezimalsystem
Hexadezimalsystem
Beispiele: 1543,210
B
Q
D
H
a∈
a∈
a∈
a∈
B = 2
B= 8
B = 10
B = 16
( 0, 1 )
( 0, 1, 2, 3, 4, 5, 6, 7 )
( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 )
( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F )
= 1 * 103 + 5 * 102 + 4 * 101 + 3 * 100 + 2 * 10-1
2002,0110 = 2 * 103 + 2 * 100 + 1* 10-2
101,012 = 1 * 22 + 0 * 21 + 1 * 20 + 0 * 2-1 + 1 * 2-2
1AF016 = 1 * 163 + 10 * 162 + 15 * 161 + 0 * 160
Dezimal
Hexadezimal
Oktal
Dual
Basis 2
Basis 10
Basis 16
Basis 8
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
21
Zahlen in den vier Systemen
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
10001
Potenzen von 2
2 n n 2 -n
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
0, 5
0, 25
0, 125
0, 062 5
0, 031 25
0, 015 625
0, 007 812 5
0, 003 906 25
0, 001 953 125
0, 000 976 562 5
0, 000 488 281 25
0, 000 244 140 625
0, 000 122 070 312 5
0, 000 061 035 156 25
0, 000 030 517 578 125
0, 000 015 258 789 062 5
Rechnergrundlagen Teil 1
- 50 -
Prof.Dipl.-Ing. Komar
5.1 Zahlenumwandlung bei unterschiedlichen Basen
Für die Umwandlung von Dezimalzahlen in Zahlen zur Basis B und für die Rückwandlung von Zahlen zur Basis
B in Dezimalzahlen werden Verfahren vorgestellt, die sich leicht programmieren lassen. Diese Verfahren
verwenden für beide Umwandlungsrichtungen die bekannten Rechenregeln des Dezimalsystems und werden im
Dezimalsystem durchgeführt. Die Verfahren beruhen auf der folgenden Darstellung ( Horner Schema ):
l
Z =
∑ ai B i =
i =− k
∑ ai B i
i =0
ganzzahliger
Anteil
l
∑a
i =0
i
Bi
−1
l
+
∑a
i =−k
i
Bi
Nachkommastellen
= ((( a l * B ) + a l-1 ) * B + . . . + a 1 ) * B + a 0
Horner Schema
−1
∑
ai Bi = (((( a -k / B ) + a -k+1 ) / B + . . . + a -2 ) / B + a -1 ) / B
i =− k
5.1.1 Umwandlung einer Dezimalzahl (Restwertmethode)
Die Vorgehensweise bei der Umwandlung einer Dezimalzahl in eine Zahl zur Basis B ist für beliebige Basen B
anwendbar. Die Beispiele beschränken sich aber auf B = 2 und B = 16, also auf die Umwandlung in das übliche
Dual- bzw. Sedezimalsystem (Hexadezimalsystem). Die Umwandlung wird in vier Schritte gegliedert.
Schritt 1: Die Dezimalzahl wird in den ganzzahligen Anteil und in die Nachkommastellen zerlegt.
Beispiel: 190,24 = 190 + 0,24.
Schritt 2: Der ganzzahlige Anteil wird durch die Basis B geteilt , es entsteht ein neuer ganzzahliger Anteil und
ein Rest. Der Rest ist schon Teil des Umwandlungsergebnisses. Der neu entstandene ganzzahlige
Anteil wird wieder durch B geteilt, usw.
Das Verfahren ist fortzusetzen, bis sich für den ganzzahligen Anteil Null ergibt. Bei der Umwandlung
ins Dualsystem stellt die erste Division z.B. fest, ob der ganzzahlige Anteil gerade ist (Rest =0) oder
ungerade (Rest 1). Dieser Rest liefert also die Ziffer mit dem niedrigsten Stellenwert, und es ergibt
sich die im Bild durch Pfeile gekennzeichnete Leserichtung.
B=2
190/2
95/2
47/2
23/2
11/2
5/2
2/2
1/2
=
=
=
=
=
=
=
=
B = 16
95 Rest 0
47 Rest 1
23 Rest 1
11 Rest 1
5
Rest 1
2 Rest 1
1 Rest0
0 Rest 1
190/16 = 11 Rest E
11/16 = 0 Rest B
19010
=
B E 16
190 10 = 1 0 1 1 1 1 1 0 2
Umwandlung des ganzzahligen Anteils
Schritt 3: Die Nachkommastellen werden mit der Basis B multipliziert, das Produkt besteht aus einem
ganzzahligen Anteil und aus neuen Nachkommastellen. Der ganzzahlige Anteil ist schon Teil des
Umwandlungsergebnisses. Die neu entstandenen Nachkommastellen werden wieder mit der Basis B
multipliziert, usw. Das Verfahren ist fortzusetzen, bis die Nachkommastellen Null werden oder bis die
gewünschte Genauigkeit erreicht ist.
Rechnergrundlagen Teil 1
0,24
0,48
0,96
0,92
0,84
0,68
0,36
0,72
- 51 -
B = 2
2 = 0,48 + 0
2 = 0,96 + 0
2 = 0,92 + 1
2 = 0,84 + 1
2 = 0,68 + 1
2 = 0,36 + 1
2 = 0,72 + 0
2 = 0,44 + 1
*
*
*
*
*
*
*
*
Prof.Dipl.-Ing. Komar
B = 16
0,24 * 16 = 0,84 + 3
0,84 * 16 = 0,44 + D
.
.
.
0,24 10
= 0,3D..... 16
.
.
0,24 10
= 0, 0011 1101 . . . 2
Umwandlung der Nachkommastellen
Schritt 4: Die Teilergebnisse der Schritte zwei und drei werden zusammengefaßt.
Beispiel:
190,2410 = 1011 1110 , 0011 1101.. .2
190,2410 = BE , 3D. ..16
5.1.2 Rückwandlung in Dezimalzahl
Auch die Vorgehensweise bei der Rückwandlung einer Zahl zur Basis B in eine Dezimalzahl ist für beliebige
Basen B anwendbar. Als Beispiele werden die gerade ermittelten Zahlen im Dual- bzw. Sedezimalsystem
(Hexadezimalsystem) verwendet. Die Rückwandlung muß also 190,24 ergeben.
Schritt 1: Die Zahl zur Basis B wird in den ganzzahligen Anteil und in die Nachkommastellen zerlegt.
Beispiele:
1011 1110 , 0011 1101 2 = 1011 1110 2 + 0 , 0011 1101 2
BE , 3D16 = BE16 + 0 , 3D16
Schritt 2: Der ganzzahlige Anteil wird nach dem Horner-Schema schrittweise mit der Basis B multipliziert.
B = 2
2
2
2
2
2
2
2
B = 16
1 0 1 1 1 1 1 0
* 1+ 0
* 2+ 1
* 5+
1
* 11+
1
* 23+
1
* 47+
1
* 95+
0
=
2
=
5
= 11
= 23
= 47
= 95
= 190
B E
16 * B + E
= 190
BE 16 = 190 10
1011 1110 2 = 190 10
Rückwandlung des ganzzahligen Anteils
Schritt 3: Die Nachkommastellen werden rückgewandelt.
B = 2
0,00111101
1
0 +
1
+
1
+
1
+
1
+
0
+
0
+
0,5
0,25
0,62..
0,81..
0,90..
0,95..
0,48..
/
/
/
/
/
/
/
/
2
2
2
2
2
2
2
2
0 , 0 0 1 1 1 1 0 1 2 = 0, 24 . .10
=
=
=
=
=
=
=
=
0,5
0,25
0,62..
0,81..
0,90..
0,95..
0,48..
0,24..
B = 16
0,3D
D
3 + 0,8125
/ 16 = 0,8125
/ 16 = 0,238
0 , 3D 16 = 0,238.. 10
Rückwandlung der Nachkommastellen
Rechnergrundlagen Teil 1
- 52 -
Prof.Dipl.-Ing. Komar
Schritt 4: Die Teilergebnisse der Schritte zwei und drei werden zusammengefaßt.
Beispiele:
1011 1110 , 0011 1101 2 = 190,24.. .10
BE , 3D 16 = 190,238.. 10
5.1.3 Vereinfachte Umwandlung
In Sonderfällen lassen sich Umwandlungen zwischen zwei Zahlensystemen mit den Basen B1 und B2
vereinfachen.
B1n
= B2
Diese vereinfachte Umwandlung ist dann möglich, wenn für die beteiligten Zahlensysteme obige Beziehung gilt,
wobei n eine ganze Zahl größer eins sein muß. Es lassen sich da vom Komma nach links bzw. rechts ausgehend,
jeweils n Folgeziffern des Systems mit Basis B1 und eine Ziffer des Systems mit der Basis B2 einander zuordnen.
a)
b)
B1= 2
B 2 = 16
n=4
B1 = 2
B2 = 8
n = 3
1011 1110 , 0011 1101
|
|
|
|
B
E , 3
D
010 111 110 , 001 111 010
|
|
|
|
|
|
2 7
6 , 1
7 2
Dual – Hexadezimal
Dual - Oktal
Umwandlung in Sonderfällen
a ) Mit B1 = 2 und B2 = 16 gilt n = 4, d.h. jeweils vier Ziffern des Dualsystems wird eine Ziffer des
Sedezimalsystems ( Hexadezimalsystems ) zugeordnet.
Diese Eigenschaft von Hexadezimal- und Dualsystem wird benutzt, um unübersichtliche Bitmuster großer Länge
( 4 – 64 Bit ) durch Hex-Ziffern übersichtlich darzustellen, wobei die Bitmuster keineswegs Dualzahlen
darstellen müssen ( Binär->Hex 4er Bündelung ; Hex-> Binär 4er Entbündelung )
b ) zeigt die Vorgehensweise für die Umwandlung zwischen Dual- und Oktalsystem. Bei Bedarf können
führende und abschließende Nullen ergänzt werden.
Mit einem Umwandlungszwischenschritt über das Hex-System läßt sich dadurch die Dual-Dezimalwandlung
bedeutend vereinfachen, dies gilt insbesondere bei der Zuhilfenahme eines Taschenrechners, der die DezimalHexadezimalumwandlung beherrscht.
Beispiel: 564,2810 in das Dualsystem wandeln unter Zuhilfenahme eines Taschenrechners der die ganzzahlige
Dezimal-Hexadezimalumwandlung beherrscht.
1.) Zuerst ganzahligen Anteil 564 nach Hex wandeln, ergibt 564 10 = 234 16
2.) Dann gewünschte Anzahl der binären Dualstellen hinter dem Komma auf Vielfache n von 4 festlegen und
den dezimalen Nachkommaanteil mit 16 n multiplizieren .
In diesem Beispiel mit n = 3 bedeutet dies 12 Binärstellen hinter dem Komma und ergibt
0,28 * 163=1146,810
Davon wird der ganzzahlige Anteil nach Hex gewandelt 114610 = 47A16
3.) Durch Multiplikation mit 16-n , im Beispiel 16-3 , wird das Komma der Hex-Zahl um n Stellen nach links
verschoben und liefert den Nachkommanteil der Hex-Zahl 47A * 16-3 = 0,47A 16
Diese Hex-Zahl läßt sich nun leicht mit der 4er-Entbündelung nach binär wandeln.
564,2810 = 234,47A16 = 0010 0011 0100 , 0100 0111 1010 2
Für die Rückwandlung dual nach dezimal ist entsprechend invers zu verfahren, d.h. jeweils vier duale
Nachkommastellen sind nach Hex zu wandeln (4er-Bündelung) und die Nachkomma-Hexzahl ist mit 16 n zu
multiplizieren (n = Nachkommastellen der Hex-Zahl )
Die dadurch entstandene ganzahlige Hex-Zahl ist nach Dezimal zu wandeln und das dezimale Ergebnis mit 16-n
zu multiplizieren und liefert den Nachkommaanteil der Dezimalzahl.
0,0011 11012 =>
0,3D 16 * 162 =
3D 16 = 6110
=> 6110 * 16-2 =
0,2383 10
Rechnergrundlagen Teil 1
- 53 -
Prof.Dipl.-Ing. Komar
5.2 Arithmetik im Dualsystem
Die Rechenregeln im Dualsystem sind besonders einfach, da nur die Ziffern 0 und 1 auftreten können.
Additions – Regeln
Subtraktions - Regeln
0+0=0
0–0=0
0+1=1
1–0=1
1+0=1
1–1=0
1 + 1 = 0 + Übertrag ( Carry ) von 1
0 – 1 = 1 – Entleihung ( Borrow ) einer 1
zur nächsthöheren Stelle
von der nächsthöheren Stelle
Da sich das Ergebnis von 1 + 1 und von 0 – 1 nicht mehr mit einer einzigen Ziffer darstellen läßt, muß eine
zusätzliche Stelle eingeführt werden. Es entsteht ein Übertrag (Carry) auf die höherwertige Stelle bzw ein
Borgen von der höherwertigen Stelle
Beispiele:
a) 5 + 12 = 17
b) 1,5 + 10,5 = 12,0
0101
1100
1 1 0 0 Carry
(1) 0 0 0 1
0001,1
+ 1010,1
1 1 1 Carry
(0)1100,0
+
a) 12 - 5 = 7
b) 14,75 - 5,25 = 9,5
1 1 0 0 Minuend
- 0 1 0 1 Subtrahend
111
Borrow
0111
1110,11
- 0101,01
10,0
1 0 0 1, 1 0
Minuend
Subtrahend
Borrow
Mit negativen Dualzahlen kann die Subtraktion auf die Addition einer negativen Zahl in der sogenannten
Komplementdarstellung zurückgeführt werden. Diese Vorgehensweise vermindert den Aufwand in Rechenschaltungen.
Bei der Multiplikation gelten die folgenden Regeln:
0*0=0
0*l =0
1*0=0
1*1=1
Die Vorgehensweise bei der Multiplikation mehrstelliger Zahlen entspricht dem vom Dezimalsystem her
bekannten Verfahren. Das Ergebnis der Multiplikation zweier n-Bit-Wörter ist 2n-Bit lang. Es ist aber immer
kleiner als die mit 2n Bits maximal darstellbare Binärzahl 2 2n – 1 . Die Multiplikation zweier Dualzahlen mit n
und k Stellen hinter dem Komma ergibt ein Produkt mit n + k Stellen hinter dem Komma.
Beispiele: a) 5 * 3 = 15
1 0 1 * 11
101
+ 101
1111
b) 3,5 * 2 = 7,0
c) 2,25 * 2,5 = 5,625
10,01* 10,1
10 0 1
+
0 0 00
+
1 0 01
1 0 1 ,1 0 1
Die Division wird, wie aus dem Dezimalsystem bekannt, auf eine Folge von Vergleichen und Subtraktionen
zurückgeführt. Bei einer Division einer Zahl mit n-Stellen hinter dem Komma durch eine Zahl mit k-Stellen
hinter dem Komma, hat der Quotient n – k Stellen hinter dem Komma.
Auch die Division von Zweierkomplementzahlen kann auf Multiplikation und Addition zurückgeführt werden.
Beispiele:
a)
9 / 3=3
1001 / 11 =11
- 11
11
- 11
0
11,1* 10
111
000
1 1 1, 0
b) 13 / 5 = 2,6
1 1 0 1 / 1 0 1 = 1 0, 1 0 0 1 . .
-101
110
- 101
1000
- 101
11
Rechnergrundlagen Teil 1
- 54 -
Prof.Dipl.-Ing. Komar
5.3 Zahlendarstellung im Rechner
In Rechnern wird für die Zahlendarstellung sowohl das Dualsystem als auch das Dezimalsystem in Form der
binär-dezimalen Zahlendarstellung ( Tetraden-Codierung der Dezimalziffern wie BCD- oder Aiken-Code )
angewandt.
Um im Rechenwerk ( ALU = arithmetische, logische Einheit ) arithmetische Operationen mit diesen Zahlen
ausführen zu können, müssen diese eine bestimmte einheitliche feste Wortlänge mit n Bits ( üblich n = 4, 8,
16, 32 oder 64 ) haben. Dies Wortlänge entspricht meist der Registerbreite der jeweiligen CPU.
Folgende Bezeichnungen sind üblich:
Maschinenwort
= Anzahl der Bits, die ein gegebener Rechner mit einem Maschinenbefehl maximal
verarbeiten kann. (entspricht der Registerbreite )
Halbbyte ( Nibble) = 4 Bit Hex-Ziffer
Byte
= 8 Bit kleinste vom Rechner adressierbare Speichereinheit, Datentyp char
Wort
= 16 Bit Ganzzahl-Datentyp integer
Doppelwort
= 32 Bit Datentypen Long-Integer, Short-Real, Float
Da die Wortlänge fest und begrenzt ist, ergeben sich für die Zahlendarstellung zwei Konsequenzen:
-
der darstellbare Zahlenbereich ist beschränkt , es sind nur E = 2 n unterschiedliche Zahlen
darstellbar
es können nur ganze Zahlen dargestellt werden
Weil man aber auch vorzeichenbehaftete, gebrochene Zahlen verarbeiten will, muß man Möglichkeiten für die
Darstellung des Vorzeichens und der Kommaposition finden.
Man unterscheidet drei Möglichkeiten der Zahlendarstellung:
-
Festkomma-Darstellung
( Festpunktzahl, fixed point )
( hohe Genauigkeit, Zahlenbereich nicht sehr groß, z.B. kaufmännisches Rechnen )
-
Gleitkomma-Darstellung
( Gleitpunktzahl, floating point )
( sehr großer Zahlenbereich mit geringerer Genauigkeit, technisch-wissenschaftliches Rechnen )
-
binärcodierte Dezimalzahl ( BCD – Zahl )
(einfache Ein /-Ausgabe, für einfache Rechnungen im beschränkten Format, Meßgeräte ,Taschenrechner)
Das Rechnen im Binärformat ( Festkomma ) und Dezimalformat ( BCD ) wird von fast allen Rechnern und
Mikroprozessoren unterstützt.
Für die Gleitkomma-Rechnung wird bei manchen Prozessoren ein zusätzlicher arithmetischer Coprozessor
benötigt, oder die Gleitkommarechnung wird durch Software in Form von Unterprogrammpaketen emuliert.
Bei den INTEL-Prozessoren ist ab dem 80486 der Gleitkommaprozessor in Form der Floating-Point-Unit
FPU integriert.
Rechnergrundlagen Teil 1
- 55 -
Prof.Dipl.-Ing. Komar
5.4 Darstellung vorzeichenbehafteter Dual-Zahlen
Die üblichen Plus- und Minuszeichen zur Kennzeichnung positiver und negativer Zahlen existiert im Binären
nicht. Für viele Anwendungen werden aber vorzeichenbehaftete Dual-Zahlen (vb.D) benötigt.
Untenstehende Tabelle zeigt am Beispiel vierstelliger Dualzahlen einige Möglichkeiten zur Darstellung
derartiger Zahlen. Man ordnet negativen Zahlen die Hälfte der verfügbaren Kombinationsmöglichkeiten zu, in
der Regel die Kombinationen mit gesetztem führenden Bit (i = 3). Der Bereich von 0000 bis 1111 wird auf diese
Weise in einen positiven und in einen negativen Bereich unterteilt.
Eine 0 in der höchstwertigen Stelle ( MSB = most significant bit ) kennzeichnet eine positive Dualzahl, eine 1
eine negative (ausgenommen die Exzeßdarstellung )
Dezimalwert bei Darstellung
nur positiver
i
3210
Dualzahlen
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
positiver und negativer Dualzahlen
Betrag und
Vorzeichen
EinerKomplement
+0
+1
+2
+3
+4
+5
+6
+7
-0
-1
-2
-3
-1
-5
-6
-7
ZweierKomplement
+0
+1
+2
+3
+4
+5
+6
+7
-7
-6
-5
-4
-3
-2
-1
-0
+0
+1
+2
+3
+4
+5
+6
+7
-8
-7
-6
-5
-4
-3
-2
-1
Exzeßdarstellung
–8
–7
–6
–5
–4
–3
–2
–1
0
+1
+2
+3
+4
+5
+6
+7
Möglichkeiten zur Darstellung vorzeichenbehafteter Dualzahlen
Bei des Exzeßdarstellung wird durch Addition einer Konstanten k = 2 n-1 der Zahlenbereich unterteilt.
Exzeßzahlenwert = Bitmusterwert als vorzeichenlose Dualzahl - 2 n – 1
Die Vorzeichen-/Betragsdarstellung wird in der Digitaltechnik und in der Datenverarbeitung kaum verwendet,
denn sie hat den Nachteil, daß man eine gesonderte Vorzeichenrechnung durchführen muß und daß man ein
Rechenwerk benötigt, das sowohl addieren als auch subtrahieren kann. Ein weiterer Nachteil dieser Darstellung
sind die beiden fehlerträchtigen Nullen ( + 0 und – 0 )
5.4.1 Komplementdarstellung
Um mit einem reinem Addierwerk (d.h. das Rechenwerk kann nur addieren ) auszukommen, führt man mit dem
Verfahren der Komplementbildung, die Subtraktion auf eine Addition zurück.
y – z = y + z* _ C
mit
z* := C – z
Komplement von z zu C
Diese Zurückführung der Subtraktion auf eine Addition ist nur dann möglich, wenn sich sowohl die
Komplementbildung von z*
als auch die Subtraktion der Komplementzahl C einfach und ohne
Zuhilfenahme der Rechenoperation " Subtraktion" durchführen lassen.
Dies ist nur beim Dualsystem der Fall, da hier die Komplementbildung durch einfaches Invertieren der
einzelnen Stellen erfolgen kann und die Subtraktion von C ( Reduktion mod C ) bei geschickter Wahl von C gar
nicht mehr ausgeführt werden muß.
Rechnergrundlagen Teil 1
- 56 -
Prof.Dipl.-Ing. Komar
Diese Komplementdarstellung zur Vermeidung der Rechenoperation "Subtraktion" kann aber auch zur
Darstellung negativer Dualzahlen verwendet werden
y - z = ( + y ) + ( -z )
indem die Subtraktion als die Addition einer negativen Dualzahl betrachtet wird.
Damit wird dann eine negative Dualzahl durch ihr Komplement dargestellt.
Die beiden günstigen Werte für die Komplementzahl C sind im dualen
C = 2 n – 1 ( Einerkomplement ) und C = 2 n (Zweierkomplement)
(mit n = binäre Stellenzahl )
Das ( B – 1 ) – Komplement einer Zahl ist die Differenz dieser Zahl zur größten darstellbaren Zahl in
diesem Zahlenbereich ( im Dezimalen -> Neuner-Komplement , im Dualen -> Einer-Komplement )
C= Bn –1
z* = C - z = ( B n – 1 ) – z
C = Komplementzahl
mit n = Stellenzahl
B = Basis des Zahlensystems
z = n-stellige Zahl
z* = dazugehörendes Komplement
B n – 1 ist eine n-stellige Zahl, deren Ziffern alle den maximal möglichen Ziffemwert besitzen
Beispiele: B = 10, n = 5 : B n – 1 = 10 5 – 1 = 99999
B = 2, n = 6: B n – 1 = 2 6 – 1 = 111111
Als Folge kann bei der Subtraktion kein Borgen auftreten.
Außerdem erhält man im Dualsystem ( B = 2 ) das Subtraktionsergebnis z* ganz
einfach durch stellenweises Invertieren des Subtrahenden z, da gilt 1– 0=1 und 1–1 = 0
Das Einer-Komplement einer Dualzahl ( ( B – 1 )-Komplement , Stellenkomplement ) wird gebildet,
indem alle Stellen invertiert werden.
DieEiner-Komplement–Darstellung negativer Zahlen findet man nur noch in einigen alten Großrechenanlagen,
Sie hat nämlich den Nachteil der zweifachen Darstellung der Null und die Arithmetik ist durch eine notwendige
Korrekturaddition bei einem auftretenden Übertrag , dem sogn. Einer-Rücklauf, etwas aufwendiger.
Das B – Komplement (echtes Komplement) einer Zahl ist die Differenz dieser Zahl zur nächsthöheren
Potenz des Zahlensystems, d.h. zur nächstgrößeren, außerhalb des Zahlenbereiches liegenden Zahl.
( im Dezimalen -> Zehner - Komplement , im Dualen -> Zweier-Komplement )
C= Bn
z * = C – z = Bn – z = ( B n – 1 ) – z + 1
Einerkomplement
Das Zweier-Komplement ( B – Komplement ) einer Dualzahl kann gebildet werden, indem man sie
stellenweise invertiert (Einerkomplement) und anschließend eine 1 addiert
oder
Das Zweier-Komplement einer Dualzahl wird gebildet, indem man von rechts nach links alle Stellen links von
der ersten 1 invertiert und die übrigen Stellen beibehält.
Auf die gleiche Weise wie oben erhält man den Betrag einer im Zweier-Komplement vorliegenden negativen
Zahl, denn nach Umformung gilt :
z = ( B n – 1 ) – z *+ 1
ImZweier-Komplement ist die Darstellung der Null eindeutig. Alle Mikrocomputer und Computer unterstützen
heutzutage das Rechnen in dieser Zahlendarstellung.
Deswegen wird im weiteren für vb.Dualzahlen immer diese Zweier-Komplement-Darstellung zugrunde gelegt.
Beispiele:
Zweierkomplementbildung
K (-1)
= 10000
K (-3)
= 10000
K (-8)
= 10000
( n = 4 ) durch Subtraktion z * = 2 4 – z
- 0001 =1111
- 0011 =1101
- 1000 =1000
Zweierkomplementbildung durch Invertieren und inkrementieren ( Wortlänge n = 8 )
K (- 107) = K (-0110 1011) = 1001 0100 + 1 = 1001 0101
K (- 16 ) = K (-01 0000 ) = 10 1111 + 1 = 1111 0000
K (- 6 ) = K (-0110 )
= 1001
+ 1 = 1111 1010
Rechnergrundlagen Teil 1
- 57 -
Prof.Dipl.-Ing. Komar
5. 4. 2 Rechnen in Zweier-Komplement-Darstellung
Bei der Rechnung im Zweier-Komplement (d.h. negative Zahlen werden im Zweierkomplemet dargestellt )
können
positive und negative Dual-Zahlen einschließlich des Vorzeichens bei Addition und Subtraktion
gleichbehandelt
werden. (vom Rechenwerk gleichbehandelt werden )!!!!
Beispiele:
Addition /Subtraktion in Zweier-Komplementdarstellung für n = 4
0 < 4 Bit-vl.D < 15
-8 < 4 Bit-vb.D < +7
a) ( +5 ) + ( -5 ) = 0
b) ( +3 ) – ( -3 ) = 6
0101
+ 1011
1111 Carry
(1) 0000
0011
- 1101
1100 Carry
(1) 0110
c) (-3) + (-3) = - 6
d) (+3) – (+7) = - 4
1101
+ 1101
1101 Carry
(1) 1010
0011
+ 1001
011 Carry
(0)1100
( ) = Übertrag oder Borger (Carry ) CY an der Stelle n + 1
Da ein vierstelliges Rechenwerk den Übertrag nicht weiter verarbeitet, braucht die Subtraktion von C = 2 4
nicht explizit ausgeführt zu werden. Wenn man den Übertrag (Carry-Bit = Übertrag an Stelle n + 1) ignoriert,
dann stellt das vierstellige Rechenwerk bereits das Ergebnis richtig dar , denn dabei wird eigentlich die
Zweier-Komplementergänzungszahl C = 2 n subtrahiert.
Im Beispiel b ) soll das Rechenwerk subtrahieren können, und in d ) wird die Subtraktion auf eine Addition mit
dem Subtrahenden im Zweierkomplement zurückgeführt.
Bereichsüberschreitungen
Beim Rechnen mit vorzeichenlosen Dualzahlen (vl.D) kann eine Zahlenbereichsüberschreitung ( Über- oder
Unterlauf ) am Übertrags-Bit (Carry / Borrow – Flag CY = 1) erkannt werden.
Die obigen Beispiele zeigen, daß beim Rechnen mit vorzeichenbehafteten Dualzahlen in Zweierkomplementdarstellung eine Zahlenbereichsüberschreitung an dem Carry-Flag Cn+1 = CY nicht mehr erkannt werden kann.
Im vorzeichenbehafteten Dual-Zahlensystem kann bei Addition und Subtraktion eine Zahlenbereichsüber schreitung auftreten und diese zeigt sich am Vorzeichenumschlag im höchstwertigen Ergebnisbit MSB .
Das Rechenwerk „kennt“ aber nur Bitmuster und unterstützt das Rechnen mit vorzeichenbehafteten Zahlen
durch das Anzeigen einer Zahlenbereichsüberschreitung in einem speziellen Overflow-Bit OV = 1 (OV-Flag)
Das Rechenwerk setzt das OV-Flag und signalisiert damit dann eine Zahlenbereichsüberschreitung , wenn die
beiden Übertragsstellen Cn und Cn+1 (= CY) ungleich sind : Cn ≠ Cn+1 dann OV =1 bzw OV = Cn ⊕ Cn+1
Beispiele mit 8-Bit-Zahlen:
vl.D
96
+ 48
___
144
Bitmuster
Welchen dezimalen Werten entsprechen die unteren Bitmuster ?
vb.D
0110 0000
(+96)
+ 0011 0000 + (+48)
11
_____
(0) 1001 0000
(+144)
CY=0
OV=1
1010 0000
1101 0000
1
(1) 0111 0000
CY=1
OV=1
0101 0000
1110 0000
11
(1) 0011 0000
CY=1
OV=0
Bereich 8Bit-vb.D. überschritten (OV=1)
Systematik von vorzeichenbehafteten Dualzahlen vb.D im binären n-Bit-System
Zahl (dez)
+/– 0 :
+1:
größte positive Zahl :
absolut größte negative Zahl :
–1 :
Binärmuster
00............. 0000
00............. 0001
0 1 1 1 . . . . . . . . . . .1 1 1 1
1 0 0 0 . . . . . . . . . . .0 0 0 0
1111.......... 1111
Rechnergrundlagen Teil 1
- 58 -
Prof.Dipl.-Ing. Komar
CY=1
0000
1111
0001
1110
0010
1101
0011
1100
0100
1011
0101
1010
0110
1001
0111
1000
OV = 1
Geschlossener-Zahlenkreis eines 4-Bit-Systems
Aufgabe : An welchem Bit des Ergebnisses kann man in einem vb.Dualsystem bei einem Überschreiten
des Zahlenbereiches (OV = 1) einen Überlauf oder Unterlauf feststellen ?
(aus dem Zahlenkreis herleitbar )
Aufgabe: Welchen Zahlenbereich haben 10-Bit vorzeichenlose (vl.D) und vorzeichenbehaftete Dualzahlen ?
Wie sehen die Bitmuster der größten positiven und negativen Zahl aus ?
Rechnergrundlagen Teil 1
- 59 -
Prof.Dipl.-Ing. Komar
5.5 Festkommadarstellung
In Festkommadarstellung wird das Komma als Trennsymbol zwischen dem ganzzahligen und dem gebrochenen
Teil von Dualzahlen mit der konstanten Wortlänge n benutzt.
Dabei wird das Komma allerdings nicht mit dargestellt ( nicht in Rechnerhardware implementiert), sondern
„existiert“ nur im Kopf des Programmierers.
Üblich und auch übersichlich ist es, das Komma entweder vor der höchsten ( MSB ) oder nach der niedrigsten
Stelle (LSB = least signifikant bit ) anzubringen. Das bedeutet, daß die in einem Wort dargestellte Zahl
entweder als
ganze Zahl
b n b n-1 . . . . . . . . . . b 1 b 0
,
n
Z=
∑b
i =0
Bi
i
oder als
echt gebrochene Zahl
,b
−1
-1
b -2 . . . . . . . . . . . . .
b –n
Z=
∑b B
i =− n
i
i
behandelt wird.
Die Festkommadarstellung als ganze Zahl mit dem Komma hinter dem niederwertigsten Bit LSB ist die
Implementierung der in höheren Programmiersprachen als "Integer" vereinbarten Zahlen.
Die Umwandlung einer gegebenen Zahl in die gewünschte Darstellungsweise erreicht man durch die Wahl eines
geeigneten Maßstabsfaktor MF.
Vorzeichenlose (vl.D) und vorzeichenbehaftete (vb.D) Festkommazahlen
Für Festkommazahlen gelten bei einem gewählten dualen Format n = k + m die folgenden darstellbaren
Zahlenbereiche ( k ganzzahlige Stellen, m gebrochene Stellen )
größte darstellbare Zahl
2 k – 2 –m
1.. .....1,1... ....1
k
m
0 . . . . . . . .0 , 0 . . . . . . . . 1
2 –m
kleinste darstellbare Zahl
größte pos. darstellbare Zahl
+ 2 k-1 – 2 –m
kleinste pos. darstellbare Zahl
kleinste neg. darstellbare Zahl
+ 2 –m
– 2 –m
größte neg. darstellbare Zahl
– 2 k-1
vl. Dualzahlen
01 . . . . . . 1 , 1 . . . . . . . 1
k
m
0 . . . . . . . .0 , 0 . . . . . . . .1
1 . . . . . . . .1 , 1 . . . . . . . .1
k
m
10 . . . . . . 0 , 0 . . . . . . . 0
vb.Dualzahlen
Überschreitungen des Zahlenbereiches nach Addition / Subtraktion werden für vl.Dualzahlen durch das
Übertrags-Bit ( Carry – Flag CY = 1 ) und für vb. Dualzahlen durch das Overflow-Bit (OV = 1 ) angezeigt.
Bei der Konvertierung von gebrochenen Dezimalzahlen in ein vorgegebenes duales Festkommaformat entsteht
durch das Abschneiden von Stellen ein Wandlungs- oder Konvertierungsfehler.
Für den absoluten Wandlungsfehler gilt: F < 2 –m
Zahlenbereiche ganzer Festkommazahlen
PC-FPU
Bezeichnung
Word Integer
Short Integer
Long Integer
Wortlänge
n
8 Bit
16 Bit
32 Bit
64 Bit
vorzeichenlose
0< Z<
0< Z <
0< Z <
0< Z <
255
65 535
4 294 967 296
2 64 – 1
0< Z < 2n– 1
vorzeichenbehaftete
– 128 < Z < 127
– 32 768 < Z < 32 767
– 2 147 483 648 < Z < 2147 483 647
– 2 63 < Z < 2 63 – 1
– 2 n–1
< Z < 2 n–1 – 1
Rechnergrundlagen Teil 1
- 60 -
Prof.Dipl.-Ing. Komar
Beispiel: 485,2510 ist in einem dualen 16Bit-Festkommasystem mit 10 Stellen (Bit) vor und 6 Stellen nach
dem Komma darzustellen
485,2510 =1E5,416 = 0 1 1 1 1 0 0 1 0 1 , 0 1 0 0 0 0 => 7950 h (abkürzende Hex-Darstellung des Bitmusters)
oder mit Maßstabsfaktor dargestellt: 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 , * 2 – 6 = 795016 * 2 –6
Beispiel: Es sollen die Zahlen 23 und 1,5 im 8 Bit Festkommaformat addiert werden.
23 10 = 0001 0111, * 2 0
1,5 10 = 0000 0011, * 2 –1
Bevor die beiden Zahlen addiert werden können, müssen die beiden Maßstabsfaktoren angeglichen werden.
+
23 10
1,5 10
24,5 10
=
=
0010 1110, * 2 –1
+ 0000 0011, * 2 –1
0011 0001, * 2 –1
Beispiel: Es sollen die Zahlen 485,62510 und 1,510 im 16 Bit Festkommaformat ( Integer mit
Maßstabsfaktoren) addiert werden .
485,62510 = 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 * 2-3
1,510 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 * 2-1
Vor der Addition müssen die beiden Maßstabsfaktoren angeglichen werden.
485,62510 = 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 * 2-3
+ 1,510
= 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 * 2-3
487,125
= 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 * 2-3
= 0 F 3 9 16 * 2-3
Mit der Festkommadarstellung rechnet man dort am sinnvollsten, wo man mit möglichst wenig Maßstabsfaktoren, am besten nur einem einzigen , auskommen kann, wie z.B. in der kommerziellen Datenverarbeitung
mit den festen DM.Pfennig-Beträgen.
Wenn nun mit Zahlen gerechnet werden muß, die sehr unterschiedliche Maßstabsfaktoren aufweisen, also einen
sehr großen Zahlenbereich abdecken, dann wird es günstiger sein, die einzelnen Maßstabsfaktoren in die
Zahlendarstellung zu integrieren, d.h mitabzuspeichern.
Und diese Anforderung führt direkt zur Zahlendarstelleung im sogn. Gleitkommaformat
Rechnergrundlagen Teil 1
- 61 -
Prof.Dipl.-Ing. Komar
5.6 Gleitkommadarstellung
Den engen Zahlenbereich der Festkommadarstellung möchte man insbesondere bei technisch wissenschaftlichen
Aufgaben mit Zahlen sehr unterschiedlicher Größenordnung vermeiden.
Benötigt wird dazu ein System zur Darstellung von Zahlen, bei dem der Bereich der darstellbaren Zahlen nicht
von der Anzahl der signifikanten Ziffern abhängt. Denn in vielen Bereichen genügt die Angabe einer relative
kleinen Anzahl von repräsentierten Stellen („ fünf Stellen hinter dem Komma “ ), allerdings muß ein weiter
Zahlenbereich abgedeckt werden.
Eine Möglichkeit, den Zahlenbereich von der Genauigkeit zu trennen, ist die Darstellung in der bekannten
wissenschaftlichen Notation.
Man benutzt dazu einen Zahlendarstellung, die neben der Ziffernfolge eine Größenordnungsangabe ( Maßstabsfaktor ) enthält, die sogenannte Gleitkommadarstellung.
Die „ wissenschaftliche Notation “ (scientific notation) der Taschenrechner ist z.B. eine Gleitkommadarstellung
für Zahlen zur Basis 10.
+ 485,2510 = + 0,48525 * 10+3 => Display-Anzeige + .48525 +03
= + 4,8525 * 10+2 =>
+ 4.8525 E +02
VZ Mantisse Exponent
Die sogn. Gleitkommadarstellung (floating point ) ist eine halblogarithmische Darstellung zur Basis b in der
Form
Z = + m b +e
mit
Z : Gleitpunktzahl
b : Basis des Zahlensystems ( gebräuchlich sind 2 , 10 und 16 )
m : Mantisse mit p Stellen
bestimmt die Genauigkeit
e : Exponent mit
r Stellen bestimmt den Zahlenbereich
Jede Rechenanlage reserviert eine feste Folge von Bits für Vorzeichen VZ, Mantisse m und Exponent e.
Bis zum Erscheinen des IEEE-Standards in der Mitte der achtziger Jahre realisierte so ziemlich jeder Rechnerhersteller eine individuelle Gleitpunkt-Arithmetik.
In den verschiedenen Rechnern erfolgten damals bei der Darstellung der Gleitkommazahlen die Potenzierungen
auf der Basis 2, 8 oder 16 .
Um die Portabilität mathematischer Berechnungen zu gewährleisten, halten sich die Rechnerhersteller heutzutage weitgehend an die IEEE-Norm. Im IEEE 754-Standard Format ( Institut of Electrical and Electronics
Engineers ) werden Gleitkommaformate mit den Genauigkeitsklassen einfache ( 32Bit ) , doppelte ( 64Bit )
und erweiterte (80Bit) Genauigkeit festgelegt.
Das Format mit erweiterter Genauigkeit dient vorwiegend der Reduzierung von Rundungsfehlern beim internen
Rechnen in Gleitkommaarithmetik-Einheiten ( Floating Point Unit FPU )
Format
einfach genau
doppelt genau
erweitert genau
PC-Bezeichnung
short real
long real
temporary real
Wortlänge
Bit
32
64
80
VZ Exponent Mantisse
dezimaler Zahlenbereich
Bit
Bit
Bit
1
8
23
± 1.18*10-38 ≤ Z ≤ ± 3.40*1038
± 2.23*10-308 ≤ Z ≤ ± 1.80*10308
1
11
52
± 3.30*10-4932 ≤ Z ≤ ± 1.21*10 4932
1
15
64
Worteinteilung bei den IEEE - Gleitkommaformaten
31 30
VZ
Charakteristik
23 22
c
63 62
79 78
VZ = Vorzeichen Mantisse
einfache Genauigkeit (32Bit)
Mantisse m
52 51
64 63
0
Betrag, normalisiert
doppelte Genauigkeit (64Bit)
erweiterte Genauigkeit (80Bit)
Die Basis B = 2 wird nicht im Wort gespeichert bzw dargestellt.
0
0
Rechnergrundlagen Teil 1
- 62 -
Prof.Dipl.-Ing. Komar
Das Vorzeichen VZ ( +: = 0 ) wird im höchstwertigen Bit ( MSB ) vorangestellt.
Die Mantisse m ist die Folge der signifikanten Ziffern der dargestellten Zahl und bestimmt mit der Anzahl
der dargestellten Ziffern die Genauigkeit.
Der Exponent e legt den Maßstabsfaktor der Zahl fest und bestimmt mit seiner Stellenzahl den darstellbaren
Zahlenbereich und wird nach einer Exzeß-Codierung als Charakteristik c bezeichnet.
Normalisierung
Im Gleitpunktformat werden die Zahlen normalisiert dargestellt. Eine Zahl gilt im binären IEEE-Format dann
als normalisiert, wenn die Mantisse m im Bereich 1 ≤ m < 2 liegt, d.h. die erste Stelle links vor dem
Komma eine 1 ist, oder wenn die Zahl gleich Null ist. Für die IEEE- Normalisierung gilt also
b0 ≤ m <b1
mit b = 2
1≤ m < 2
–> ( 1.m )2
Damit ist hierbei die erste Stelle vor dem Komma immer 1 und deswegen wird dieses erste Bit vor dem Komma
weggelassen ( hidden bit ) und nicht im Mantissenfeld abgespeichert.
Durch dieses "versteckte" Bit, das natürlich implizit in alle Rechnungen miteinbezogen wird, läßt sich die
Auflösung bzw. die Genauigkeit gegenüber dem früher üblichen Format um 1 Bit erhöhen.
Früher war die Normalisierung auf die erste Nachkommastelle ungleich 0 üblich :
für
b = 10
0.1 < m < 1
1 / b < m < 1 und m ≠ 0
b = 2 0.5 < m < 1 –> ( 0.m )2
Die normalisierte Gleitpunktzahl beginnt dabei also rechts vom Komma mit der ersten von Null verschiedenen Ziffer.
Beispiel für diese normalisierte Form der Dezimalzahl
12,34
–> 0,1234 * 10 2
und
der
Dualzahl
1010.01010 – > 0.10100101 * 2 4
Mantisse m und Exponent e sind beides vorzeichenbehaftete Festkommazahlen
.Exponent e als ganze Zahl = Festkommazahl (Integer ) mit Komma hinter LSB = low significant bit ,
. Mantisse m als gebrochene Zahl = Festkommazahl mit Komma vor dem MSB = most signif. bit
und wurden in den verschiedensten Rechnern auf alle bereits bekannten Arten ( Zweier- , Einer-Komplement,
Betrag und Vorzeichen ) dargestellt.
Im IEEE-Format wird die Mantisse mit Betrag m und Vorzeichen VZ dargestellt .
Beispiel: 12,344 10 = 1100, 010112 = 0,110001011 * 2 4 = > 0
Dualzahl
norm. Dualzahl
VZ
00000100
110001011.........0
Exponent e
Mantisse m
früher übliche Darstellung
= 1,10001011 * 2 3 => 0
00000011
10001011 ..........0
VZ Exponent e
Mantisse m
Darstellung nach 32Bit IEEE
Im IEEE-Format wird weiterhin der Exponent e einer normalisierten Gleitpunktzahl in Exzeß-Darstellung
verschlüsselt und heißt dann Charakteristik c . Dabei wird zum Exponenten e eine Konstante k (Bias )
addiert, so daß die Summe immer größer oder gleich Null wird.
Stehen r Stellen zur Darstellung des Exponenten e zur Verfügung, so erhält man die Exzeß-Darstellung, ,
indem man zum Exponenten die Konstante k = ½ b r hinzuzählt.
Für die Charakteristik c gilt ganz allgemein
c = e + k
mit
0 ≤ c ≤ br–1
k =½ b
für b = 2
r
b : Basis des Zahlensystems
0 ≤ c ≤ 2 r– 1
k = 2 r–1
r: Stellenzahl des Exponenten e
Im IEEE-Format wird aufgrund der beiden Ausnahmen für die Darstellung von Null und Unendlich die
Konstante k = ½ *( 2 r – 2 ) hinzugezählt.
c = e + k
mit
0 < c < 2 r – 1 und k = 2
r-1
- 1 wg. Ausnahmen -> cmin = 1 und cmax = 2 r - 2
Rechnergrundlagen Teil 1
- 63 -
Prof.Dipl.-Ing. Komar
Allgemein gilt für eine Zahl in Gleitkommazahlen-Darstellung
Z = + m * bC – k
negativer
Überlauf
und speziell für das IEEE-Format
darstellbare negative
Zahlen
negativer positiver
Unterlauf
- Zmin
- Zmax
normalisierte Zahlen
max.
Wandlungsfehler
Z = ( -1 )VZ * ( 1.m )2 * 2 C - k
0
darstellbare positive
Zahlen
+ Zmin
denormalisierte
Zahlen
(0,0..m)2
(1.m)2
pos.
+ Zmax
normalisierte Zahlen
(1.m)2
Zahlengerade mit Bereich der darstellbaren Gleitkommazahlen
Ausnahmen im IEEE-Format
Zu beachten bei den IEEE-Zahlenformaten ist, daß die Charakteristiken c = 0 und c = 2 r – 1
Zahlendarstellung nicht zugelassen sind und zur Kennzeichnung von Ausnahmesituationen dienen.
0000 0000 h => + 0
zur
1.)
c =0
m=0 :
Z = 0
2.)
c = 0,
m ≠ 0 :
Z = (-1)VZ * 2 Cmin-k * ( 0, 0..0m ) 2 bedeutet, die Zahl Z wird in
denormalisierter Form dargestellt, weil sie betragsmäßig kleiner ist als 2Cmin-k
und hat, gekennzeichnet durch c = 0 den konstanten Exponenten e min = Cmin – k
3.)
c = 2 r – 1, m ≠ 0 :
Z ist keine gültige Gleitpunktzahl ( not a number – NaN )
4.)
c = 2 r – 1, m = 0 :
Z = (– 1)VZ * ∞
8000 0000 h => – 0
d.h. das Ergebnis ist positiv oder negativ unendlich
Damit bestimmen sich die darstellbaren Zahlen im IEEE-Format zu :
Z = ( -1 ) VZ * 2 C– k * ( 1.m )2
=
( -1 )VZ * 2 C-k * ( 1,0 +
p
∑
m –i * 2-i )
i =1
mit
0 < c < 2 r – 1 –> wg. Ausnahmen cmin = 1 , cmax = 2 r – 2
k = 2 r– 1 – 1
( 1.m ) min = 1.0
( 1.m ) max = 2 – 2 – p
| Z min | = 2 exp(cmin – k ) * ( 1.m ) min
| Zmax | = 2 exp(cmax – k ) * ( 1.m ) max
k
32-Bit-Format
64-Bit-Format
80-Bit-Format
127
1023
16383
= 2 1– k * 1
= 2 exp( 2 r – 2 – k ) * ( 2 – 2 – p ) ≈ 2exp( 2 r – 1 – k )
|Z min |
2 –126 = 1.175 *10 –38
2–1022 = 2.23 *10 –308
2–16382 = 3.36 *10 –4932
|Zmax|
2 128 = 3.40 * 10 38
2 1024 = 1.80 * 10 308
2 16384 = 1.18 * 10 4932
Dezimalstellen
≈7
≈ 15
≈ 19
Zu beachten: Das 80-Bit-Format ist nach IEEE nicht vollständig spezifiziert. In der FPU der PC-Prozessoren
werden alle Rechnungen im 80-Bit-Format ausgeführt und es wird nur in diesem Format die 1 vor dem Komma
der normalisierten Zahl im Mantissenfeld m mitabgespeichert.
Rechnergrundlagen Teil 1
- 64 -
Prof.Dipl.-Ing. Komar
0< Exp < max
Beliebiges Bitmuster
Normalisiert
+
Denormalisiert
+
0
Beliebiges Nicht-Null-Bitmuster
Null +
+
0
0
Unendlich +
+
1 1 1 1. . . . 1
0
Keine Zahl
+
1 1 1 1 . . . .1
Beliebiges Nicht-Null-Bitmuster
Vorzeichen-Bit
Numerische Typen nach
Beispiel:
Gleitkomma- Dezimalzahl
gibt für die Charakteristik c den Bereich
und für die Konstante
und damit für den Exponent e = c – k
IEEE 754
b = 10, r = 2
00 ≤ c ≤ 99
k = 0.5 * 10 2 = 50
– 50 ≤ e ≤ 49
Mit einer 7-stelligen Mantisse gibt sich folgende Zahlendarstellung
0,000478 = 0,478 * 10 – 3 = + 4780000 – 03
- 31,438 = -0,31438 * 10 2 = – 3143800 + 02
m
e
= + 47 4780000
= – 52 3143800
VZ c
m
Beispiel: Dezimalzahl – 61,5625 darstellen im binären IEEE-Format -einfach genau
– 61,5625 = – 11 1101, 1001 = – 1,111 0110 01 * 2 5
Dualzahl
normalisierte Dualzahl
Festkommazahl
=> 1 10000100 11101100100...............0
VZ
c
m
Gleitkommazahl im 32 Bit IEEE-Format
mit k = 12710 = 0111 1111 2 und dem Exponent e = 510 = 00000101 2
ergibt sich die Charakteristik zu c = e + k = 1000 0100 2 = 132 10
– 61,5625 10 => C 2 7 6 4 0 0 0 h
IEEE-Format in abkürzender Hexadezimaldarstellung
Beispiel: + 0,4375 10 im binären 32Bit-IEEE-Format darstellen.
0,4375 = + 0, 0111 = + 1, 110000 * 2 – 2
=> 0 01111101
VZ
c
mit dem Exponent e = – 2 10 = > c = -2 + 127 = 125 10
110 0000 0000 0000 0000 0000
m
=> 3EE00000 h
= 0111 1101 2
Aufgabe: Welcher Dezimalzahl entspricht die 64 Bit-IEEE-Gleitkommazahl BFF0000000000000 h ?
und welcher die 32 Bit-IEEE-Gleitkommazahlendarstellung 00200000 h ?
Rechnergrundlagen Teil 1
- 65 -
Prof.Dipl.-Ing. Komar
5.6.1 Gleitpunktarithmetik
Die Gleitkommadarstellung einer Zahl im Rechner besteht aus zwei Teilen: Mantisse mit Vorzeichen
und Charakteristik. Beide Teile müssen getrennt verarbeitet werden, was die Operationsabläufe bei
Gleitkommaarithmetik länger und komplizierter macht.
Da aber Mantisse und Charakteristik für die getrennte Verarbeitung als Festkommazahlen betrachtet werden
können, ergeben sich keine wesentlich neuen Überlegungen.
Leistungsfähige Rechner enthalten meist ein spezielles Gleitkomma-Rechenwerk, mit dem die Gleitkommaoperationen realisiert werden. ( bei den 8- und 16-Bit-Mikroprozessoren zusätzliche externe Bausteine sogn.
Arithmetik-Coprozessoren bzw Gleitkomma-Coprozessoren, z.B. im PC die Intel- Co-Prozessoren 8087,
80287, 80387, die ab dem 486er als FPU auf dem Prozessorchip integriert sind ).
Üblicherweise sind zwei getrennte Befehlssätze für Fest- und Gleitkommaoperationen vorhanden.
Wenn keine Gleitkomma-Hardware verfügbar ist, dann müssen die Gleitkommaoperationen per Software
in Form von Unterprogrammen realisiert werden und dies bedeutet natürlich deutlich längere Ausführungszeiten.
5.6.2 Gleitkommaoperationen
Voraussetzung beider Durchführung von Gleitkommaoperationen ist, daß die Operanden in normalisierter Form
vorliegen und das Ergebnis wieder in normalisierte Form überführt wird.
Die Operanden seien
Z 1 = m 1 * b n1 und
Z 2 = m 2 * b n2
Addition / Subtraktion: Zuerst wird der kleinere Exponent dem größeren angeglichen. Ist n 1 > n 2 gilt:
Z 1 ± Z 2 = ( m 1 ± m 2 / (b n1 –
n2
) ) * b n1
1) Durch Linksverschieben des Kommas wird der Operand mit der kleineren Charakteristik so umgeformt,
daß die beiden Charakteristiken gleich sind. Der umgeformte Operand ist dann nicht mehr normalisiert.
2 ) Die beiden Charakteristiken bleiben erhalten, und die beiden Mantissen werden addiert bzw. subtrahiert.
3 ) Das Ergebnis wird durch Verschieben des Kommas, also durch Wahl der geeigneten Charakteristik
normalisiert
Multiplikation : Die Mantissen werden multipliziert und die Exponenten addiert
Z 1 * Z 2 = m 1 * m 2 * b n1 +
n2
Division: Die Mantissen werden dividiert und die Exponenten voneinander abgezogen
Z 1 / Z 2 = ( m 1 / m 2 ) * b n1 – n 2
5.6.3 Rundungs- und Wandlungsfehler
Gleitkommazahlen bilden im Gegensatz zu reellen Zahlen kein Kontinuum. Deswegen ist es meistens nötig, eine
nicht exakt darstellbare Zahl mit der nächst liegenden ausdrückbaren Zahl darzustellen, was als Rundung
bezeichnet wird.
Der Abstand zwischen benachbarten ausdrückbaren Zahlen ist nicht konstant, allerdings ist der durch Rundung
entstehende relative Fehler über den gesamten darstellbaren Bereich ungefähr gleich.
Der bei der Konvertierung in das Gleitpunktformat entstehende Wandlungsfehler als Folge der begrenzten
Stellenzahl der Mantisse ist nicht mehr direkt proportional zu der abgeschnittenen Stellenzahl, sondern ist auch
abhängig von der Größenordnung des Maßstabfaktors , d.h. dem Exponenten e der darzustellenden Zahl.
Der größtmögliche Wandlungsfehler tritt auf, wenn die abzuschneidenden Stellen alle 1 sind, d.h. wenn die
exakte Mantisse eigentlich den Wert 2 – 2– ∞ aufweisen würde.
absoluter Fehler (Betrag) F = 2 – p * 2 e
max. relativer Fehler
f = 2 –p
mit p : Stellenzahl der Mantisse
e : Exponent
Aufgabe: Bestimmung des größten absoluten Wandlungsfehlers im 32 Bit-IEEE-Format ?
Aus der endlichen Mantissenlänge aller Gleitpunktformate folgt, daß reelle Zahlen prinzipiell nicht exakt in
Rechnern darstellbar sind. Es können nur einzelne Punkte auf der reellen Zahlengeraden dargestellt werden.
Deswegen und auch wegen der unvermeidbaren Denormalisierungsfehler gilt beispielsweise das
Assoziativgesetz a + ( b + c ) = (a + b ) + c nicht für das Rechnen mit Gleitkommazahlen und darum:
Traue niemals vorbehaltlos den Rechenergebnissen eines Computers , insbesondere nicht bei längeren,
rekursiven Kettenrechnungen (z.B. Simulationen!!) – Ergebnisse immer durch Abschätzen überprüfen
Rechnergrundlagen Teil 1
- 66 -
Prof.Dipl.-Ing. Komar
5.7 Binärcodierte Dezimalzahl
Die rechnerinterne Zahlendarstellung als binärcodierte Dezimalzahl hat den Vorteil einer einfachen Ein/
Ausgabe und einer beliebigen Genauigkeit. Nachteilig ist der größere Speicherplatzbedarf und die längere
Rechenzeit. Insbesondere in Kleinstcomputern wie Taschenrechnern und ähnlichem wird oft ausschließlich in
diesem Dezimalsystem gerechnet.
Beinahe alle gängigen Computer und Mikroprozessoren unterstützen mit ihrem Befehlssatz das Rechnen im
binärcodierten Dezimalsystem.
Rechnerintern wird in diesem System jede Dezimalziffer in 4 Bit dargestellt und zwar üblicherweise im
tetradischen 8421-BCD-Code.
Um bestimmte ungünstige Eigenschaften des 8421-BCD-Codes zu vermeiden, konnte man früher in einigen
Rechenanlagen auch die Darstellung mittels Stibitz/Exzess-3-Code ( Siemens 2002 ) oder mittels Aiken-Code
(Mark I, II, III ) finden.
Dezimalzahl
1
9
8
7
0001
1001
1000
0111
0011 0001
0011 1001
0011 1000
0011 0111
rechnerintern im BCD-Code
ASCII-Code der Dezimalziffer
Da eine binärcodierte Dezimalziffer nur 4 Bit belegt, kann man in einem Byte zwei Dezimalstellen speichern,
die sogn. gepackte BCD-Darstellung
Die ungepackte Darstellung codiert eine Dezimalziffer nur im niederwertigen (rechten ) Halbbyte ( Nibble )
und nutzt damit den Speicherplatz sehr schlecht, allerdings wird die Ein/Ausgabe trivial, da eine Dezimalziffer
ganz einfach durch eine 3 = 00112 im High-Nibble nach ASCII codiert wird (siehe oben ).
0 0 0 0 X 3 X2 X 1 X 0
0 0 0 0 Y3 Y2 Y1 Y0
ungepackt 1 Ziffer / Byte
X 3 X 2 X 1 X 0 Y3 Y2 Y1 Y0
gepackt
2 Ziffern / Byte
Gepackte und ungepackte Darstellung von BCD – Ziffern
Beispielsweise lassen sich mehrstellige vorzeichenbehaftete BCD-Zahlen folgendermaßen aufbauen:
Ziffer
Ziffer
_
_
_
VZ
Ziffer
Ziffer
VZ
Ungepackte Dezimalzahl
Ziffer
Ziffer
Ziffer
Ziffer
_
_
_
Gepackte Dezimalzahl
Die gepackte 10 Byte BCD-Zahl (Vorzeichen u. 18 Dezimalstellen ) für die Floating Point Unit FPU
der INTEL 80x86-Prozessoren (entspricht auch Arithmetik-Coprozessoren 80x87 ) hat das Format:
10. Byte
S
X
9.Byte
8.Byte
d17 d16
d15 d14
1.Byte
d1
S = Vorzeichenbit
X -> diese Bits haben keine Bedeutung und werden von der FPU beim Speichern mit Nullen gefüllt
d0
Rechnergrundlagen Teil 1
- 67 -
Prof.Dipl.-Ing. Komar
5.7.1 BCD-Arithmetik
Beim Rechnen im BCD-System müssen aufgrund der ungültigen Zahlenwerte in den Pseudotetraden
die Stellenergebnisse korrigiert werden, denn diese Pseudotetraden werden vom Rechenwerk wie gültige
Dualzahlen behandelt.
Die einzelnen 4-Bit-Stellenergebnisse müssen dann korrigiert werden,
– wenn das Ergebnis der Operation einen Übertrag ( Borger ) auf die nächsthöherer Stelle erzeugt hat (die
Pseudotetraden wurden durchlaufen) und dies wird entweder im Hilfs-Carry (Auxiliary Carry ) AC
(bei einem Halbbyte-Übertrag ) oder im Carry-Flag CY ( bei Byte-Übertrag ) angezeigt
oder
–
wenn der Ergebniswert selbst eine Pseudotetrade ist.
In diesen beiden Fällen muß dann mit dem Wert 610 = 0 1 1 0 2 ( Anzahl der Pseudotetraden ) für die
jeweilige Stelle eine sogn. Dezimal-Korrektur (dezimal adjust ) durchgeführt werden.
Mikroprozessoren stellen für diese Dezimalkorrektur spezielle Befehle zur Verfügung, z.B. der 80x86 die
Befehle DAA => Dezimal Adjust after Addition
DAS => Dezimal Adjust after Subtraction
Da das Rechenwerk nicht "weiß", in welchen Zahlensystem gerechnet wird, muß der Programmierer dafür
Sorge tragen, daß nach einer arithmetischen Operation im BCD-System der entsprechende Befehl für die
Dezimal-Korrektur ausgeführt wird. Das Rechenwerk unterstützt diese Dezimalkorrektur durch das Setzen
/Löschen des Hilfs-Carry-Flags AC bei einem Übertrag im Ergebnis vom Low- zum High-Nibble
Beispiel
einer Addition zweier dreistelliger Dezimalzahlen (12 Bit ) im BCD–System
798 10
+
239 10
(1) 037 10
+
unkorrigiertes Ergebnis:
0111
1001
1000
0010
11
0011
111
1001
(0) 1001
1101
CY=0
Dezimalkorrektur
1. wg AC=1
(z.B. mit DAA-Befehl )
+
2. wg Pseudotetrade +
3. wg Pseudotetrade +
korrigiertes Ergebnis:
AC=0
0001
AC=1
0000
0000
0110
(0) 1001
1101
0111
0000
11
(0) 1010
0110
1
0011
0000
0110
11
0000
0000
(1) 0000
CY=1
0011
0111
0111
Der darstellbare Zahlenbereich von 3 BCD-Ziffern 000 – 999 wurde in diesem Beispiel überschritten
und dies wird vom Rechenwerk durch das Übertragsbit ( Carry CY = 1 ) angezeigt.
72 10
– 19 10
–
53 10
Dezimalkorrektur
(z.B. mit DAS-Befehl)
0111
0010
0001
11
(0) 0101
1001
1
1001
CY=0
1. wg AC = 1
–
0000
(0) 0101
AC =1
0110
11
0011
Herunterladen