Kapitel 3: Repräsentation von Daten – Binärcodierung ganzer Zahlen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht – Repräsentation von Daten im Computer (dieses und nächstes Kapitel) Einleitung Codierung von ganzen Zahlen Zahlensysteme Rechnen im Dualsystem Codierung von Gleitkommazahlen Codierung von Text Literatur Küchlin & Weber. Einführung in die Informatik. 2005. Kapitel 2, 31-44 Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 1 Information und Daten Information elementare Kategorie wie Stoff und Energie Æ neues Wissen über einen Sachverhalt Æ Beseitigung von Ungewissheit in Rechnern repräsentiert durch Daten Information Information m.a.W.: Information = Daten mit Bedeutung Kodierung Daten = Folge von Bits, die einen Wert repräsentieren Bit = elementare Informationseinheit: 0 oder 1 / Nein oder Ja 1 Byte = 8 Bit z.B. " 01000001 repräsentiert den Buchstaben 'A' " Interpretation Daten Daten z.B. 01000001 Computer Technische Geräte für automatisierte Datenverarbeitung Speichern, Umformen, Komprimieren, Transport, Eingabe, Ausgabe von Daten Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Informationsdarstellung Bit: 0 oder 1 "BInary digiT" (Binärziffer) Informationsmenge in einer Antwort auf eine Frage mit zwei Möglichkeiten z.B. ja oder nein, wahr oder falsch, schwarz oder weiß, ... Bitfolgen Zur Darstellung von Antworten auf Fragen mit mehr als zwei Möglichkeiten z.B. 4 Möglichkeiten Süd, West, Nord, Ost 00, 01, 10, 11 z.B. 8 Möglichkeiten Süd, West, Nord, Ost, Südost, Nordwest, Nordost, Südwest 000, 001, 010, 011, 100, 101, 110, 111 Jedes zusätzliche Bit verdoppelt die Anzahl der möglichen Bitfolgen! Es gibt genau 2N mögliche Bitfolgen der Länge N Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 2 Informationsdarstellung Daten Æ Information viele mögl. Interpretationen von Bytes z.B. Byte 65 in ASCII oder Latin-1 als Buchstabe 'A' in Soundfile als kurzes Stück Sound (z.B., 1/44100 einer Sekunde) Rot-Anteil eines Pixels in einem (RGB-)Bild Rot-Anteil eines Pixels von einem Bild, das Teil eines Films ist Multimedia = Unimedia (N. Negroponte, MIT Medialab) alle digitalen Medien (Ton/Bild/Film) auf unterster Ebene repräsentiert durch Bits & Bytes Prof. B. Jung TU Bergakademie Freiberg Grundlagen der Informatik, WS 2007/08 Informationsdarstellung - Digitaler Sound Sampling aufgenommene Sound-Welle Sequenz-von Sound-Samples einer einfachen Sound-Welle 59 19 -1 -111 -30 18 18 1 2 3 4 5 6 7 Sound als Feld (Array) von Samples • z.B. jedes Sample kodiert mit 16 Bit / 2 Bytes (-32768…32767) • z.B. 44100 Samples pro Sekunde • d.h. 3-Minuten Song benötigt 158.760.000 Samples (Stereo × 2) Digitale Soundverarbeitung = Manipulation von Feldern Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 3 Informationsdarstellung – Digitale Bilder RGB (Rot-Grün-Blau) Farben werden als Kombination von Rot-, Grün-, Blau-Anteilen repräsentiert Mit jedem Pixel ist ein Rot-, ein Grün- und ein Blauwert assoziiert Die Werte liegen typischerweise im Bereich 0..255 (8 Bit) Bilder als Matrizen von Pixeln Digitale Bildverarbeitung = Manipulation von Matrizen Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Zahlensysteme Römische Zahlen Prof. B. Jung 4 Zahlensysteme Leibniz-Traktat bezüglich Dualzahlen von 1679 Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Zahlensysteme Positionssysteme bei natürlichen Zahlen Ein Positionssystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird Eine natürliche Zahl n wird durch folgende Summe dargestellt: Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 5 Zahlensysteme Zahlendarstellung in verschiedenen Zahlensystemen Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Zahlensysteme Positionssysteme bei gebrochenen Zahlen Bei gebrochenen Zahlen trennt ein Punkt (Komma im Deutschen) in der Zahl den ganzzahligen Teil der Zahl vom gebrochenen Teil (Nachkommateil). Solche Zahlen lassen sich durch folgende Summenformel beschreiben: Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 6 Zahlensysteme Positionssysteme bei gebrochenen Zahlen Beispiele: Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Dual-, Oktal- und Hexadezimalsystem In der Informatik spielen das Dual-, Oktal- und Hexadezimalsystem eine zentrale Rolle Das Dualsystem und das Bit im Rechner Das von uns verwendete Zehnersystem ist ein Positionssystem. Jeder Position in einer Zahl ist ein bestimmter Wert zugeordnet, der eine Potenz von 10 ist Das Zehnersystem, in dem 10 verschiedene Ziffern 0, 1, 2,…, 9 existieren, ist technisch schwer zu realisieren. Daher benutzt man in Rechnern intern das Dualsystem, bei dem nur zwei Ziffern, 0 und 1, verwendet werden, die sich technisch relativ leicht nachbilden lassen: Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 7 Dual-, Oktal- und Hexadezimalsystem Prof. B. Jung Eine einzelne Binärstelle (0 oder 1), die ein Rechner speichert, wird als Bit („BInary digiT“, also Binärziffer) bzeichnet. Ein Bit ist die kleinste Informationseinheit, die ein Computer verarbeiten kann. Auch beim Dualsystem handelt es sich um ein Positionssystem. Der Wert einer Position ist hier jedoch eine Potenz von 2: Beispiele: Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Dual-, Oktal- und Hexadezimalsystem Konvertieren zwischen Dual- und Oktalsystem Prof. B. Jung Neben dem Dualsystem ist in der Informatik noch das Oktalsystem wichtig, da es in einer engen Beziehung zum Dualsystem steht. Es gilt nämlich: 23 = 8 (Basis des Oktalsystems). Um eine im Dualsystem dargestellte Zahl ins Oktalsystem zu konvertieren, bildet man von rechts beginnend so genannte Dualtriaden (Dreiergruppen). Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 8 Dual-, Oktal- und Hexadezimalsystem Konvertieren zwischen Dual- und Oktalsystem Bei der Umwandlung einer Oktalzahl in ihre Dualdarstellung geht man den umgekehrten Weg. Es ist offensichtlich, dass ein Mensch sich die Zahl 3614(8) wesentlich leichter merken und damit umgehen kann, als 011110001100(2). Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Dual-, Oktal- und Hexadezimalsystem Konvertieren zwischen Dual- und Hexadezimalsystem Neben dem Dualsystem ist in der Informatik noch das Hexadezimalsystem wichtig, da es ebenfalls in einer engen Beziehung zum Dualsystem steht. Es gilt nämlich: 24 = 16. Um eine im Dualsystem dargestellte Zahl ins Hexadezimalsystem zu konvertieren, bildet man von rechts beginnend so genannte Dualtetraden (Vierergruppen). Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 9 Konvertierungsalgorithmen: Konvertieren von anderen Systemen in das Dezimalsystem Eine in einem Positionssystem mit der Basis B dargestellte natürliche Zahl n: n = ∑i =0 bi ⋅ B N i lässt sich mit Hilfe des Hornerschemas wie folgt darstellen: Mit Hilfe dieser Darstellung können Konvertierungen in das Dezimalsystem einfach durchgeführt werden. Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Konvertieren vom Dezimalsystem in andere Systeme 1. 2. 3. Für die Umwandlung einer Dezimalzahl x in ein Zahlensystem mit der Basis n kann folgender Algorithmus verwendet werden: x : n = y Rest z Falls y ungleich 0: Mache y zum neuen x und fahre wieder mit Schritt 1 fort Die ermittelten Reste von unten nach oben gelesen liefern die gewünschte Dualzahl Ergebnis (z von unten nach oben gelesen): Prof. B. Jung (30)10 = (11110)2 Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 10 Konvertieren vom Dezimalsystem in andere Systeme 1. 2. 3. Beispiel (2) x : n = y Rest z Falls y ungleich 0: Mache y zum neuen x und fahre wieder mit Schritt 1 fort Die ermittelten Reste von unten nach oben gelesen liefern die gewünschte Dualzahl Ergebnis (z von unten nach oben gelesen): Prof. B. Jung (43)10 = (101011)2 Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Rechenoperationen im Dualsystem Addition von Dualzahlen Für die duale Addition gilt allgemein: Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 11 Rechenoperationen im Dualsystem Subtraktion u. negative Zahlen Negative Zahlen werden üblicherweise durch ihren Betrag mit vorangestelltem Minuszeichen dargestellt. Diese Darstellung wäre auch rechnerintern denkbar, hat jedoch den Nachteil, dass man eine gesonderte Vorzeichenrechnung durchführen müsste und man ein Rechenwerk benötigt, das sowohl addieren als auch subtrahieren kann. Man kann die Subtraktion auf eine Addition zurückzuführen durch das Verfahren der Komplementbildung Idee: a − b = a + b , wobei b das Komplement ist Man unterscheidet zwei Arten der Komplementbildung, wobei B für das Zahlensystem steht: B-Komplement und (B-1)-Komplement Da das B-Komplement technisch leichter realisierbar ist, wird vorwiegend mit dem B-Komplement (Zweier-Komplement) gearbeitet. Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Rechenoperationen im Dualsystem B-Komplement Zuordnung der Bitkombinationen zu positiven und negativen Zahlen Zahlenring für vier Bits, erstes Bit ist Vorzeichenbit Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 12 Rechenoperationen im Dualsystem B-Komplement Regeln für die Bildung eines Zweier-Komplements Ist das 1. Bit 1, so handelt es sich um eine negative Zahl. Der Wert einer negativen Zahl wird dann im Zweier-Komplement dargestellt. Zweier-Komplement zu einem Wert bedeutet, dass zunächst jedes einzelne Bit invertiert (umgedreht) wird, und dann auf die so entstandene Bitkombination die Zahl 1 aufaddiert wird. Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Rechenoperationen im Dualsystem B-Komplement Bei der Verwendung der Komplement-Darstellung muss eine Maschine nicht subtrahieren können, sondern kann jede Subtraktion a - b durch eine Addition a + -b realisieren. Das vorne überlaufende Bit wird weggeworfen! Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 13 Rechenoperationen im Dualsystem B-Komplement Im Beispiel hat der vorne stattfindende Überlauf des Bits keinen Einfluss auf die Richtigkeit des Ergebnisses. Das gilt nicht allgemein. Wenn das Ergebnis nicht im darstellbaren Zahlenbereich liegt, dann erhält man bei einem Überlauf ein falsches Ergebnis: Überlauf erkennbar: Addition zweier neg. Zahlen muss neg. Ergebnis liefern! Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Rechenoperationen im Dualsystem (B-1)-Komplement (B-1)-Komplement (Einer-Komplement) zum Vergleich. Die Zahlendarstellung ist hier symmetrisch. Es gibt eine positive und eine negative 0. Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 14 Rechenoperationen im Dualsystem (B-1)-Komplement Regeln für die Bildung eines Einer-Komplements Ist das 1. Bit mit 1 besetzt, so handelt es sich um eine negative Zahl (eventuell die negative Null 111…111). Der Wert einer negativen Zahl wird dann im Einer-Komplement dargestellt. Einer-Komplement zu einem Wert bedeutet, dass zunächst jedes einzelne Bit invertiert (umgedreht) wird. Führt die Addition des Komplements zum Überlauf einer 1, muss zum Ergebnis diese 1 hinzuaddiert werden („Einer-Rücklauf “). Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg Rechenoperationen im Dualsystem Multiplikation und Division Die ganzzahlige Multiplikation bzw. Division wird in einem Rechner allgemein mittels wiederholter Addition durchgeführt z.B. 5 *3: 00101 + 00101 + 00101 = 01010 + 00101 = 01111 In den Sonderfällen des Multiplikators bzw. Divisors von 2, 4, 8, … kann die Multiplikation bzw. Division aber einfacher und schneller durch eine Verschiebung (Shift) von entsprechend vielen Bits nach links bzw. rechts erfolgen: Bei 2 (21) um 1 Bit, bei 4 (22) um 2 Bits, bei 8 um 3 (23) Bits usw. Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 15 Byte-Reihenfolge bei der Speicherung ganzer Zahlen – Little Endian und Big Endian Ganze Zahlen werden im Rechner i.d.R. durch mehrere Bytes repräsentiert Little Endian 7..0 Zahl an Adresse n belegt dann die 31..24 23..16 15..8 7..0 Speicherstellen n, n+1, n+2, n+3 Big Endian Frage: Steht an Adresse n dann das Byte mit den n n+1 n+2 n+3 niederwertigsten oder das Bytes mit den höchstwertigsten Bits? Beide Antworten sind möglich! typisch: 4 Bytes (integer) n+3 n+2 n+1 n 31..24 23..16 15..8 Little Endian: z.B. Intel, AMD Big Endian: z.B. Sparc, IBM Mainframe Dieser Unterschied macht (nur) dann große Probleme, wenn ein Wort byteweise zwischen verschiedenen Computern übermittelt wird Beispiel: Repräsentation von 1025 Prof. B. Jung Grundlagen der Informatik, WS 2007/08 TU Bergakademie Freiberg 16