Vorlesung Informatik I

Ähnliche Dokumente
Vorlesung Informatik I

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

, 2017S Übungstermin: Di.,

Kapitel 5: Darstellung von Daten im Rechner

Einführung in die Informatik I

2 Repräsentation von elementaren Daten

, 2014W Übungstermin: Fr.,

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit

Einführung in die Programmierung

7. Übung zur Vorlesung Grundlagen der Informatik

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 15/16

Abschnitt 2: Daten und Algorithmen

, 2015S Übungstermin: Mi.,

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

2.1 Fundamentale Typen

Algorithmen & Programmierung. Reelle Zahlen in C (1) Darstellung reeller Zahlen

B: Basis des Zahlensystems 0 a i < B a i є N 0 B є (N > 1) Z = a 0 B 0 + a 1 B 1 + a 2 B a n-1 B n-1

5 Zahlenformate und deren Grenzen

Zahlendarstellungen und Rechnerarithmetik*

6.2 Kodierung von Zahlen

2 Darstellung von Zahlen und Zeichen

Rückblick. Addition in der b-adischen Darstellung wie gewohnt. Informatik 1 / Kapitel 2: Grundlagen

Informationsdarstellung 2.2

Grundlagen der Technischen Informatik. 3. Übung

Dipl.-Ing. Halit Ünver Datenbanken/Künstliche Intelligenz FAW/n. Zahlensysteme

Daten und Algorithmen

Vorlesung Programmieren

Das Rechnermodell - Funktion

Datendarstellung Teil 2

Rechnerstrukturen. Michael Engel und Peter Marwedel. Sommer TU Dortmund, Fakultät für Informatik

Computerarithmetik (6a)

2 ARITHM. UND LOG. AUSDRÜCKE ZAHLEN

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Datenverarbeitung

Grundlagen der Informatik

2.1.2 Gleitkommazahlen

1. Rechnerzahlen, Kondition, Stabilität

2.4 Codierung von Festkommazahlen c) Wie lässt sich im Zweier-Komplement ein Überlauf feststellen? neg. pos.

Technische Informatik (RO)

Einführung in die Computerorientierte Mathematik

Grundlagen der Technischen Informatik. 4. Übung

Das Maschinenmodell Datenrepräsentation

II. Grundlagen der Programmierung

Numerik. Festpunkt-Darstellung

bei Unterlauf wird stattdessen Hälfte des Divisors addiert Ersparnisse einer Addition bzw. Subtraktion

3. Datentypen, Ausdrücke und Operatoren

1 Dualsystem Dualzahlen mit Vorzeichen 4. 2 Hexadezimalsystem Hexadezimalzahlen mit Vorzeichen Oktalsystem 13 4 Zahlenring 14

Grundzüge der Informatik Tutorium Gruppe 6

Datendarstellung Teil 2

Zwischenklausur Informatik, WS 2014/15

Grundlagen der Programmierung

Die Zahl ist: (z 2, z 1, z 0 ) (z ) : 7 = 0 Rest z 2

Numerisches Programmieren, Übungen

Abschnitt 4: Daten und Algorithmen

Numerische Verfahren und Grundlagen der Analysis

4. Daten. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Rundungsfehler-Problematik bei Gleitpunktzahlen

Rückblick. Zahlendarstellung zu einer beliebigen Basis b. Umwandlung zwischen Zahlendarstellung (214) 5 = (278) 10 =(?) 8

Zahlensysteme. Formale Methoden der Informatik WiSe 2008/2009 Folie 1 (von 54)

Rechnergrundlagen SS Vorlesung

bekannt Analog reduzieren wir die Randwerte im 2d-System. Man erhält dann eine Blocktridia-

BB/CS- SS00 Rechner im Überblick 1/1. Ein Stellenwertsystem (Zahlensystem) ist ein Tripel S = (b, Z, δ) mit den folgenden Eigenschaften:

Information und ihre Darstellung

Mathematische Werkzeuge für Computergrafik 2016/17. Gleitkommzahlen

1. Informationsdarstellung. Darstellung und Bedeutung. Darstellung und Bedeutung. Interpretation ??? 1. Kapitel

N Bit Darstellung von Gleitkommazahlen

Wertebereiche, Overflow und Underflow

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

1 Grundlagen der Numerik

2.5 Primitive Datentypen

Information und ihre Darstellung

Vorzeichenbehaftete Festkommazahlen

Übung Praktische Informatik II

Numerische Lineare Algebra

Rechnergrundlagen SS Vorlesung

Einführung in die Programmiertechnik

Numerisches Programmieren, Übungen

Das Verfahren in Hardware

Numerisches Programmieren, Übungen

2.Vorlesung Grundlagen der Informatik

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

1. Vorzeichen und Betrag (engl. Sign-/Magnitude) 2. Stellenkomplement 3. Basiskomplement

Zahlen in Binärdarstellung

Computergrundlagen Zahlensysteme

Transkript:

Vorlesung Informatik I Universität Augsburg Wintersemester 2010/2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Zahlen- und Zeichendarstellungen 1

Inhalt Motivation Technische Beschränkung für Rechner: Es ist nur die Verarbeitung von n-bit-worten möglich (für ein festes n) Mit dieser Bitzahl muss man nun ganze Zahlen, reelle Zahlen, Zeichen, usw. darstellen (in der Praxis n abhängig vom Datentyp) Folgerung: Man kann nur endlich viele Zahlen/Zeichen darstellen 2

Inhalt Motivation Welche Zahlen sollen codiert werden (zusammenhängender Bereich, ganze/gebrochene/reelle Zahlen?) Wie codiert man negative Zahlen? Mit welcher Genauigkeit (Rundungsfehler) codiert man gebrochene Zahlen? 3

Inhalt Motivation Wie lassen auf den Codierungen arithmetische Operationen realisieren? c Codierung (x, y) (c(x), c(y)) op op x op y c Codierung c(x op y) = c(x) op c(y) op {+, -, *, / } op {+, -, *, / } Wie muss op aussehen, damit das Diagramm kommutativ ist? 4

Inhalt Zahldarstellungen (Vorzeichen-Betrag, Exzeß-q, 1-Komplement, 2-Komplement, Festpunkt, Gleitpunkt) Zeichendarstellungen (ASCII, Unicode) 5

Zahlendarstellungen Notationen Jedes Wort über dem Alphabet {0,1} bezeichnen wir als Bitmuster Ab jetzt benutzen wir ausschließlich n-bit-codierungen. Die Bezeichnung einer Codierung ist immer von der Form c <Name>,n <Name> n ist eine Abkürzung für den Namen der Codierung ist die Anzahl der verwendeten Bit c <Name>,n (x) bezeichnet also das zu der Zahl x gehörende Bitmuster bzgl. der Codierung c <Name>,n 6

Zahlendarstellungen Notationen Wir benutzen also Bitmuster als Codewörter für Zahlen. Ein gegebenes Bitmuster kann aber für verschiedene Zahlen stehen, je nachdem, welche Codierung man verwendet hat. Durch die Notation (<Bitmuster>) <Name>,n geben wir an, dass wir <Bitmuster> als Codewort bzgl. der Codierung c <Name>,n auffassen (<Bitmuster>) <Name>,n bezeichnet die Zahl, für die c <Name>,n ((<Bitmuster>) <Name>,n )=<Bitmuster> gilt 7

Zahlendarstellung ganzer Zahlen Vorbereitungen Für x {0,..., 2 n - 1} bezeichnen wir mit c 2,n (x) die Dualdarstellung von x in n Stellen, evtl. aufgefüllt mit führenden Nullen Eignet sich noch nicht für die Darstellung negativer Zahlen Bei Addition / Subtraktion / Multiplikation kann der darstellbare Zahlenbereich über-/unterschritten werden - was dann? Beispiele: c 2,8 (7)=00000111 (00000111) 2,8 =7 8

Zahlendarstellung ganzer Zahlen Grundidee Darstellung eines Zahlbereiches A = {x u,x u +1,...,x o -1,x o }, mit: x u 0 x o x u < 0 < x o A maximal, d.h. A 2 n A symmetrisch zum Nullpunkt, d.h. x u x o Arithmetische Operationen (auf codierten Zahlen) leicht zu realisieren (z.b. durch bitweise Operationen) 9

Vorzeichen-Betrag-Darstellung Definition A VB,n = {-(2 n-1-1),...,-0,+0,1,...,2 n-1-1} c VB,n : A VB,n IB n c VB,n (x) := 0c 2,n-1 ( x ), falls 0 x < 2 n-1 c VB,n (x) := 1c 2,n-1 ( x ), falls -2 n-1 < x 0 Also: Positive Zahlen: Negative Zahlen: 0 1 Betrag in Dualdarstellung Betrag in Dualdarstellung 10

Vorzeichen-Betrag-Darstellung Beispiele c VB,8 (7)= 0c 2,7 (7)=00000111 (00000111) VB,8 =7 c VB,4 (-7)= 1c 2,3 (7)=1111 (1111) VB,4 =-7 11

Berechnung Für Vorzeichen-Betrag-Darstellung c VB,n (x) = b n-1... b 1 b 0 gilt x=(b n-1... b 1 b 0 ) VB,n =(+/-) Σ b i 2 i für b n-1 = (0/1) n-2 i = 0 12

Vorzeichen-Betrag-Darstellung Arithmetik Arithmetik der Vorzeichen-Betrag-Darstellung: Sehr aufwendig! (selbst überlegen: z.b. postive Zahl + negative Zahl =? Fallunterscheidung nötig) Wird in der Praxis nicht verwendet 13

Exzeß-q-Darstellung Definition A Ex-q,n ={-q,...,0,1,...,2 n 1 q} für q ganze nicht-negative Zahl c EX-q,n : A Ex-q,n IB n c Ex-q,n (x) := c 2,n (x+q) 14

Exzeß-q-Darstellung Beispiele: c Ex-32,8 (7)= c 2,8 (39)=00100111 (00100111) Ex-32,8 =7 c Ex-8,4 (-7)= c 2,4 (1)=0001 (0001) Ex-8,4 =-7 15

Berechnung Für Exzeß-q-Darstellung c Ex-q,n (x) =b n-1... b 1 b 0 gilt n-1 x = (b n-1... b 1 b 0 ) Ex-q,n = Σ b i 2i q i = 0 16

Exzeß-q-Darstellung Arithmetik Sei + die Addition, - die Subtraktion auf Dualzahlen Addition (auf Exzeß-q-Darstellungen) c Ex-q,n (x) c Ex-q,n (y) =c Ex-q,n (x+y) (x, y) c + x + y c =c 2,n (x+y+q) =c 2,n (x+q)+c 2,n (y+q)-c 2,n (q) (c(x),c(y)) c(x + y) = c(x) c(y) =c Ex-q,n (x)+c Ex-q,n (y) c 2,n (q) Beispiel: c Ex-32,8 (7) c Ex-32,8 (-7)=00100111+00011001-00100000=00100000 17

Exzeß-q-Darstellung Arithmetik Sei + die Addition, - die Subtraktion auf Dualzahlen Subtraktion Θ (auf Exzeß-q-Darstellungen) c Ex-q,n (x) Θ c Ex-q,n (y) = c Ex-q,n (x-y) (x, y) c - x - y c =c 2,n (x-y+q) =c 2,n (x+q)-c 2,n (y+q)+c 2,n (q) (c(x),c(y)) Θ c(x - y) = c(x) Θ c(y) =c Ex-q,n (x)-c Ex-q,n (y)+c 2,n (q) Beispiel: c Ex-32,8 (7) Θ c Ex-32,8 (-7)=00100111-00011001+00100000=00101110 18

Exzeß-q-Darstellung Arithmetik Bei Bereichsüberlauf (also bei x+y > 2 n 1 q oder <-q) brechen C-Programme mit Fehlermeldung ab Multiplikation/Division: zu kompliziert! Wird zur Darstellung des Exponenten bei Gleitpunktdarstellungen verwendet (bemerke: da braucht man nur Addition / Subtraktion) 19

1- und 2-Komplement-Darstellung Grundidee Wir betrachten eine feste ganze nicht-negative Zahl k Für eine ganze nichtnegative Zahl x k/2 sei x := k x das Komplement von x bzgl. k 0 x k/2 k-x k 20

1- und 2-Komplement-Darstellung Grundidee Stelle positive Zahlen durch Binärcodierung dar: c(x) := c 2,n (x) Stelle negative Zahlen durch Binärcod. des Komplements dar: c(-x) := c 2,n (x) = c 2,n (k-x) Subtraktion durch Addition des Komplements: c(y)-c(x) = c(y)+c(-x) = c 2,n (y)+c 2,n (k-x) 21

1- und 2-Komplement-Darstellung Grundidee Wähle k so, dass Komplementbildung und Subtraktion von k leicht realisierbar sind: k = 2 n (2-Komplement) k = 2 n -1 (1-Komplement) 0 x k/2 k-x k 22

2-Komplement-Darstellung Definition A 2K,n = {-2 n-1,...,0,1,...,2 n-1 1} c 2K,n : A 2K,n IB n c 2K,n (x) := c 2,n (x) falls 0 x < 2 n-1 c 2K,n (x) := c 2,n (2 n + x) falls -2 n-1 x < 0 0 x 2 n-1 2 n -x 2 n 23

2-Komplement-Darstellung Beispiele: c 2K,4 (7)= c 2,4 (7)=0111 (0111) 2K,4 =7 c 2K,4 (-8)= c 2,4 (2 4-8)=1000 (1000) 2K,4 =-8 24

2-Komplement-Darstellung Beispiel für n=4 (komplett) c 2K,4 (0) = 0000 c 2K,4 (1) = 0001 c 2K,4 (-1) = 1111 c 2K,4 (2) = 0010 c 2K,4 (-2) = 1110...... c 2K,4 (7) = 0111 c 2K,4 (-7) = 1001 c 2K,4 (-8) = 1000 25

Berechnung Für 2-Komplement-Darstellung c 2K,n (x) = b n-1... b 1 b 0 gilt n-2 x = (b n-1... b 1 b 0 ) 2K,n = -b n-1 2 n-1 + Σ b i 2i i = 0 (Rechnung?) 26

2-Komplement-Darstellung Arithmetik Komplementbildung Sei x {1,...,2 n-1-1}, c 2K,n (x)=c 2,n (x)=b n-1...b 1 b 0 Dann gilt: c 2K,n (-x) = c 2,n (x) =c 2,n (2 n - 1) -c 2,n (x) + c 2,n (1) =(11...11) 2,n -(b n-1... b 1 b 0 ) 2,n + (00...01) 2,n =((1 - b n-1 )... (1 - b 1 )(1 - b 0 )) 2,n + (00...01) 2,n Komplementbildung = Kippen aller Bits und Addition von 1 27

2-Komplement-Darstellung Arithmetik (anschaulich) Addition: einer positiven Zahl y: y Schritte gegen Uhrzeigersinn. einer negativen Zahl y: y Schritte im Uhrzeigersinn. Subtraktion: durch Addition des Komplements Multiplikation / Division: Zurückführung auf Addition 28

2-Komplement-Darstellung Arithmetik (formal) c 2K,n (x) c 2K,n (y) := (c 2K,n (x)+c 2K,n (y)) modulo 2 n + ist die Addition auf Dualzahlen modulo 2 n bedeutet anschaulich: Ignorieren des Überlaufs (führende 1 ignorieren, falls Ergebnis n+1 Stellen hat) 29

2-Komplement-Darstellung Arithmetik (formal) Rechnung für 2 n-1 >x,y 0, x+y<2 n-1 : c 2K,n (x) c 2K,n (y) = c 2K,n (x+y) = c 2,n (x+y) = c 2,n (x) + c 2,n (y) = (c 2,n (x) + c 2,n (y)) modulo 2 n = (c 2K,n (x) + c 2K,n (y)) modulo 2 n 30

2-Komplement-Darstellung Arithmetik (formal) Rechnung für 2 n-1 >x 0,0>y 2 n-1,x+y<0: c 2K,n (x) c 2K,n (y) = c 2K,n (x+y) = c 2,n (x+y+2 n ) = c 2,n (x+y+2 n ) modulo 2 n = (c 2,n (x) + c 2,n (y+2 n )) modulo 2 n = (c 2K,n (x) + c 2K,n (y)) modulo 2 n 31

2-Komplement-Darstellung Arithmetik (formal) Rechnung für 2 n-1 >x 0,0>y 2 n-1,x+y 0: c 2K,n (x) c 2K,n (y) = c 2K,n (x+y) = c 2,n (x+y) + 2 n - 2 n = (c 2,n (x+y) + 2 n ) modulo 2 n = (c 2,n (x) + c 2,n (y+2 n )) modulo 2 n = (c 2K,n (x) + c 2K,n (y)) modulo 2 n 32

2-Komplement-Darstellung Arithmetik (formal) Rechnung für 0>x,y 2 n-1,x+y -2 n-1 : c 2K,n (x) c 2K,n (y) = c 2K,n (x+y) = c 2,n (x+y+2 n ) + 2 n - 2 n = (c 2,n (x+y+2 n ) + 2 n ) modulo 2 n = (c 2,n (x+2 n ) + c 2,n (y+2 n )) modulo 2 n = (c 2K,n (x) + c 2K,n (y)) modulo 2 n 33

2-Komplement-Darstellung Arithmetik (formal) Ergebnis bei Bereichsüberlauf 2 n-1 >x,y 0, x+y 2 n-1 : ((c 2K,n (x)+c 2K,n (y))modulo 2 n ) 2K,n = ((c 2,n (x)+c 2,n (y))modulo 2 n ) 2K,n = (c 2,n (x+y)) 2K,n = x+y-2 n Kein Abbruch, sondern Rückgabe des falschen Ergebnisses (Anschaulich im Zahlenring: Zyklischer Bereichsüberlauf) 34

2-Komplement-Darstellung Arithmetik (formal) Ergebnis bei Bereichsüberlauf -2 n-1 x,y<0, x+y < -2 n-1 : ((c 2K,n (x)+c 2K,n (y))modulo 2 n ) 2K,n = ((c 2,n (x+2 n )+c 2,n (y+2 n ))modulo 2 n ) 2K,n = (c 2,n (x+y+2 n )) 2K,n = x+y+2 n Kein Abbruch, sondern Rückgabe des falschen Ergebnisses (Anschaulich im Zahlenring: Zyklischer Bereichsüberlauf) 35

1-Komplement-Darstellung Definition A 2K,n = {-(2 n-1-1),...,-0,+0,1,...,2 n-1 1} c 1K,n : A 1K,n IB n c 1K,n (x) := c 2,n (x) falls 0 x < 2 n-1 c 1K,n (x) := c 2,n (2 n -1 + x) falls -2 n-1 < x 0 0 x 2 n-1-1 2 n -1-x 2 n -1 36

1-Komplement-Darstellung Beispiele: c 1K,4 (7)= c 1,4 (7)=0111 (0111) 1K,4 =7 c 1K,4 (-7)= c 1,4 (2 4-1-7)=1000 (1000) 1K,4 =-7 37

1-Komplement-Darstellung Beispiel für n=4 (komplett) c 1K,4 (+0) = 0000 c 1K,4 (-0) = 1111 c 1K,4 (1) = 0001 c 1K,4 (-1) = 1110 c 1K,4 (2) = 0010 c 1K,4 (-2) = 1101...... c 1K,4 (7) = 0111 c 1K,4 (-7) = 1000 38

Berechnung Für 1-Komplement-Darstellung c 1K,n (x) = b n-1... b 1 b 0 gilt x n-2 = (b n-1... b 1 b 0 ) 1K,n = -b n-1 (2 n-1-1)+ Σ b i 2i i = 0 (Rechnung?) 39

1-Komplement-Darstellung Arithmetik Komplementbildung Sei x {1,...,2 n-1 }, c 1K,n (x)=c 2,n (x)=b n-1...b 1 b 0 Dann gilt: c 1K,n (-x) = c 2,n (x) = c 2,n (2 n - 1) -c 2,n (x) = (11...11) 2,n -(b n-1... b 1 b 0 ) 2,n =((1 - b n-1 )... (1 - b 1 )(1 - b 0 )) 2,n Komplementbildung = Kippen aller Bits 40

1-Komplement-Darstellung Arithmetik (anschaulich) Addition: einer positiven Zahl y: y Schritte gegen Uhrzeigersinn. einer negativen Zahl y: y Schritte im Uhrzeigersinn. Subtraktion: durch Addition des Komplements Multiplikation / Division: Zurückführung auf Addition 41

1-Komplement-Darstellung Arithmetik (formal) Analog zu 2-Komplement: Betrachte (2 n -1) statt 2 n c 1K,n (x) c 1K,n (y) = (c 1K,n (x)+c 1K,n (y)) modulo 2 n -1 + ist die Addition auf Dualzahlen modulo 2 n -1 bedeutet anschaulich: Addition des Überlaufs (führende 1 ignorieren und an letzter Stelle addieren, falls Ergebnis n+1 Stellen hat) 42

Ziel: Zahlendarstellung reeller Zahlen Darstellung rationaler und reeller Zahlen als n-bit-worte Problem: Nur endlich viele Zahlen exakt darstellbar mit n Bits (Festpunkt oder Gleitpunkt) unendlich viele Zahlen nur approximativ (gerundet) darstellbar Frage: Welche Zahlen wollen wir exakt darstellen? 43

Festpunktdarstellung mit n Bits Definition: Seien m (Anzahl Nachkommastellen) und k (Anzahl Vorkommastellen) nichtnegative ganze Zahlen fest gegeben Hat eine nicht-negative ganze Zahl x die Summendarstellung x = (b k-1...b 0.b -1...b -m ) 2 heißt c 2,m,k (x) = b k-1...b 0 b -1...b -m = c 2,m+k (x*2 m ) 2-adische Festpunktdarstellung von x mit k Vorkomma- und m Nachkommastellen und x heißt exakt darstellbar 44

Festpunktdarstellung mit n Bits Definition: k = n-m. m Sind die Nachkommastellen einer Zahl x nicht exakt darstellbar, so rundet man zur nächstgelegenen exakt darstellbaren Zahl: Mit rd bezeichnen wir den Rundungsoperator, der eine Zahl x zur nächstgelegenen ganzen Zahl rundet. Er erfüllt also rd(x)-x =min{ y-x y ist eine ganze Zahl} 45

Festpunktdarstellung mit n Bits Definition: k = n-m. m Wir definieren für beliebiges x: c 2,m,k (x):= c 2,m+k (rd(x*2 m )) So können wir also bei der Berechnung vorgehen: (1) Multiplizieren der Zahl mit 2 m (2) Auf- bzw. Abrunden in eine ganze Zahl (3) Dual-Darstellung mit n Bit 46

Festpunktdarstellung mit n Bits Beispiel: Stelle Dezimalzahl 1.2 in folgender 8-Bit Festpunktdarstellung bzgl. der Basis 2 dar:. 4 4 Multiplizieren der Zahl mit 2 4 : 1.2 * 2 4 = 19.2 Auf- bzw. Abrunden in ganze Zahl: rd(19.2)=19 Dual-Darstellung mit 8 Bit: c 2,4,4 (1.2)= c 2,8 (rd(1.2* 2 4 ))=c 2,8 (19)=00010011 (00010011) 2,4,4 =(00010011) 2,8 / 2 4 =1.1875 47

Berechnung Für Festpunktdarstellung mit n Bits c 2,m,k (x) = b n-1... b 1 b 0 gilt x = (b n-1... b 1 b 0 ) 2,m,k n-1 = Σ b i 2 i-m i=0 = (b n-1... b 1 b 0 ) 2,m+k /2 m 48

Festpunktdarstellung mit n Bits Absoluter Rundungsfehler: x-(c 2,m,k (x)) 2,m,k x-(c 2,m,k (x)) 2,m,k = x-(c 2,m+k (rd(x*2 m ))) 2,m+k /2 m = x-(rd(x*2 m ))/2 m = x*2 m -(rd(x*2 m )) /2 m < 0.5/2 m = 1/2 m+1 (Abstände zwischen exakt darstellbaren Zahlen gleichbleibend) 49

Festpunktdarstellung mit n Bits Relativer Rundungsfehler: x-(c 2,m,k (x)) 2,m,k / x x-(c 2,m,k (x)) 2,m,k / x < 1/ x 2 m+1 (kann beliebig groß werden für kleine x) 50

Festpunktdarstellung mit n Bits Arithmetik: k=n-m. m Zurückführen auf Rechenoperationen für ganze Zahlen durch Multiplizieren der Zahl mit 2 m 51

Festpunktdarstellung mit n Bits Eigenschaften: k = n-m. Gleichbleibender Abstand 1/2 m zwischen exakt darstellbaren Zahlen Geeignet für Zahlen ähnlicher Größenordnung (Anzahl der Nachkommastellen m an Größenordnung anpassen, s.d. Rundungsfehler tolerierbar) m 52

Festpunktdarstellung mit n Bits Eigenschaften: k = n-m. m Problem: Unterschiedliche Größenordnungen in Anwendungen: Avogadrozahl: L = 6.0225 10 23 Planck Konstante: h = 6.6260755 10-34 Besser: Darstellung als Gleitpunktzahl mit n Bits 53

Gleitpunktdarstellung mit n Bits Darstellung normierter Gleitpunktzahlen zur Basis 2 in n-bits: Jede reelle Zahl r besitzt eine eindeutige Darstellung der Form (siehe Kapitel zu Zahlensystemen): r = m 2 e mit 1 m < 2 Idee: Codiere (m, e) in geeigneter Weise als n-bit-zahl: k Bits für die Darstellung von m (Festpunktdarstellung) n - k Bits für e (Exzeß-q-Darstellung) (0 < k < n) 54

Gleitpunktdarstellung mit n Bits Definition V Charakteristik Betrag der Mantisse n-2 k-2 0 V = Vorzeichen der Mantisse =0 für positive Zahlen =1 für negative Zahlen 55

Gleitpunktdarstellung mit n Bits Definition V Charakteristik Betrag der Mantisse n-2 k-2 0 Darstellung der Mantisse (k-1 Bits): Festpunktdarstellung mit (1) einer Vorkommastelle (muss nicht dargestellt werden, da immer =1) (2) k-1 Nachkommastellen Für c 2,k-1,1 ( m ) = 1b -1 b -2... b -k-2 definieren wir: c 2,man,k-1 ( m ) := b -1 b -2... b -k-2 56

Gleitpunktdarstellung mit n Bits Definition V Charakteristik Betrag der Mantisse n-2 k-2 0 Darstellung des Exponenten = Charakteristik (n-k Bits): Exzeß-(2 n-k-1-1)-darstellung c 2,exp,n-k (e) := c EX-q,n-k (e) mit q=(2 n-k-1-1) (Exponenten zwischen (2 n-k-1-1) und 2 n-k-1 darstellbar) 57

Gleitpunktdarstellung mit n Bits Definition V Charakteristik Betrag der Mantisse n-2 k-2 0 c GP,k,n (m 2 e ) := 0c 2,exp,n-k (e)c 2,man,k-1 ( m ), falls 0 m c GP,k,n (m 2 e ) := 1c 2,exp,n-k (e)c 2,man,k-1 ( m ), falls m < 0 Diese Bitmuster (und weitere) stehen dabei nicht zur Verfügung: Spezielle Darstellung der 0: Bitmuster 00 00 0 Spezielle Darstellung von + : Bitmuster 01 10 0 Spezielle Darstellung von - : Bitmuster 11 10 0 58

Gleitpunktdarstellung mit n Bits Beispiel: V Charakteristik Betrag der Mantisse 7 6 4 3 0 3-Bit Charakteristik: q=3, Exponent zwischen 3 (Bitmuster 000) und 4 (Bitmuster 111) 4-Bit Mantisse: Werte zwischen 1 (Bitmuster 0000) und 2-2 -5 (Bitmuster 1111) 59

Gleitpunktdarstellung mit n Bits Beispiel: Stelle die Zahl 4.6 dar 0 1 0 1 0 0 1 0 7 6 4 3 0 (1) Normierte Gleitpunktdarstellung (m und e bestimmen): 4.6 = 2.3*2 1 = 1.15*2 2 Ergebnis: m = 1.15 und e=2 60

Gleitpunktdarstellung mit n Bits Beispiel: Stelle die Zahl 4.6 dar 0 1 0 1 0 0 1 0 7 6 4 3 0 (2) Vorzeichen bestimmen: 0 für positive Zahl 61

Gleitpunktdarstellung mit n Bits Beispiel: Stelle die Zahl 4.6 dar 0 1 0 1 0 0 1 0 7 6 4 3 0 (3) Charakteristik bestimmen: c 2,exp,3 (2)= c EX-3,3 (2)= c 2,3 (2+3)=101 62

Gleitpunktdarstellung mit n Bits Beispiel: Stelle die Zahl 4.6 dar 0 1 0 1 0 0 1 0 7 6 4 3 0 (4) Code der Mantisse bestimmen: c 2,4,1 (1.15)=c 2,5 (rd(1.15*2 4 ))=c 2,5 (18)=10010 Ergebnis: c 2,man,4 (1.15)=0010 63

Gleitpunktdarstellung mit n Bits Beispiel: Stelle die Zahl 4.6 dar 0 1 0 1 0 0 1 0 7 6 4 3 0 Also: c GP,4,8 (4.6)=01010010 Umgekehrt: (01010010) GP,k,8 = (1.0010) 2 *2 (101) EX-3,3 =(100.1) 2 =4.25 64

Gleitpunktdarstellung mit n Bits Berechnung: V Charakteristik Betrag der Mantisse n-2 k-2 0 Für c GP,k,n (x) = b n-1... b 1 b 0 gilt x = (b n-1... b 1 b 0 ) GP,k,n = (+/-) (1.b k-2... b 1 b 0 ) 2 *...b ) 2(b n-2 k-1 EX-q,n-k für b n-1 =(0/1) und q=2 n-k-1-1 65

Gleitpunktdarstellung mit n Bits Beispiele: V Charakteristik Betrag der Mantisse 7 6 4 3 0 Kleinste positive darstellbare Zahl: Kleinster Exponent: (000) 2,exp,3 = (000) EX-3,3 = (000) 2,3-3 = 0-3 = -3 Kleinste Mantisse (Bitmuster 0 0 schon vergeben): (0001) 2,man,4 = (10001) 2,4,1 = (1.0001) 2 Ergebnis: (00000001) GP,4,8 = (1.0001) 2 *2-3 = (0.0010001) 2 66

Gleitpunktdarstellung mit n Bits Beispiel: V Charakteristik Betrag der Mantisse 7 6 4 3 0 Größte positive darstellbare Zahl: Größter Exponent: (111) 2,exp,3 = (111) EX-3,3 = (111) 2,3-3 = 7-3 = 4 Größte Mantisse (Bitmuster 1 1 schon vergeben): (1110) 2,man,4 = (11110) 2,4,1 = (1.1110) 2 Ergebnis: (01111110) GP,4,8 = (1.1110) 2 *2 4 = (11110) 2 = 30 67

Gleitpunktdarstellung mit n Bits Beispiele: IEEE-Standard 754 Einfache Genauigkeit: V Charakteristik Betrag der Mantisse 31 30 23 22 0 8-Bit Charakteristik: Exponent zwischen 127 (Bitmuster 0...0) und 128 (Bitmuster 1...1) (23 + 1)-Bit Mantisse: Werte zwischen 1 (Bitmuster 0...0) und 2-2 -24 (Bitmuster 1...1) 68

Gleitpunktdarstellung mit n Bits Beispiele: IEEE-Standard 754 Doppelte Genauigkeit: V Charakteristik Betrag der Mantisse 63 62 52 51 0 11-Bit Charakteristik: Exponent zwischen 1023 (Bitmuster 0...0) und 1024 (Bitmuster 1...1) (52 + 1)-Bit Mantisse: Werte zwischen 1 (Bitmuster 0...0) und 2-2 -53 (Bitmuster 1...1) 69

Gleitpunktdarstellung mit n Bits Beispiele: IEEE-Standard 754 Erweiterte Genauigkeit: V Charakteristik Betrag der Mantisse 79 78 64 63 0 15-Bit Charakteristik: Exponent zwischen (2-14 -1) (Bitmuster 0...0) und 2 14 (Bitmuster 1...1) (64 + 1)-Bit Mantisse: Werte zwischen 1 (Bitmuster 0...0) und 2-2 -65 (Bitmuster 1...1) 70

Festpunktdarstellung mit n Bits Absoluter Rundungsfehler: m 2 e -(c GP,k,n (m 2 e )) GP,k,n m 2 e -(c GP,k,n (m 2 e )) GP,k,n = m-(c 2,k-1,1 (m)) 2,k-1,1 2 e < 2 e /2 k (Kann sehr groß werden für große Zahlen: (2 n-k-1-1) e 2 n-k-1 ) 71

Festpunktdarstellung mit n Bits Relativer Rundungsfehler: m 2 e -(c GP,k,n (m 2 e )) GP,k,n / m 2 e m 2 e -(c GP,k,n (m 2 e )) GP,k,n / m 2 e < 2 e / m 2 e 2 k < 2 e /2 e 2 k < 1/2 k (Gleichbleibend für alle Zahlen) 72

Gleitpunktdarstellung mit n Bits Arithmetik: V Charakteristik Betrag der Mantisse n-2 k-2 0 Wie Arithmetik normierter Gleitpunktzahlen: Addition/Subtraktion: Exponentenangleich - Mantissen addieren/subtrahieren - neu normieren Multiplikation/Division: Exponenten addieren/subtrahieren - Mantissen mult./div. - neu normieren mit Ausnahmefällen: Bereichsüberlauf oder -unterschreitung bei Darstellung des Exponenten ( overflow / underflow ); z.b. bei Multiplikation sehr großer/kleiner Zahlen 73

Gleitpunktdarstellung mit n Bits Arithmetik: V Charakteristik Betrag der Mantisse n-2 k-2 0 Große Rundungsfehler möglich: durch Exponentenangleich bei Addition sehr unterschiedlich großer Zahlen ((2-9 +2 23 )-2 23 =0,2-9 +(2 23-2 23 )=2-9 ) durch Stellenauslöschung bei Subtraktion gleich großer Zahlen (10 23 ((10-9 +1)- 1)=0, 10 23 (10-9 +(1-1))=10 14 ) 74

Gleitpunktdarstellung mit n Bits Arithmetik: Ergebnisse von Gleitpunktberechnungen können u.u. erheblich von dem exakten Wert abweichen! Auswege: Exakte Arithmetik (z.b. Intervallarithmetik: nicht durch Hardware realisiert, aber Software erhältlich) Rechnungen geeignet organisieren (Gruppierung von Zahlen nach Größenbereichen) Übliche Rechengesetze gelten i.a. nicht (Assoziativ-/Distributiv- /Kommutativgesetz, siehe obiges Beispiel) 75

Gleitpunktdarstellung mit n Bits Arithmetik: Sonderrolle der 0: Keine ngp-darstellung arithmetische Sonderbehandlung (siehe IEEE-Standard) exaktes Ergebnis 0 wird in der Regel nicht angenommen bei Abfragen: nicht r == 0, sondern r < ε nicht x == y, sondern x - y < ε 76

Zeichendarstellungen Grundidee: Schritt 1: Verwende Code-Tabelle zur Übersetzung von Zeichen in Zahlen (ASCII, Unicode) Schritt 2: Codiere alle Zahlen in 0en und 1en (binäres Zahlensystem) 77

Zeichendarstellungen ASCII - Tabelle: American Standard Code for Information Interchange Gebräuchlichste Code-Tabelle für Computer Alle wichtigen Zeichen der englischen Sprache von 0 bis 127 nummeriert (dargestellt durch Bits 2 bis 8) Darunter: Auch nicht druckbare Zeichen mit ausschließlich formatierender Wirkung (z.b. Tabulatorzeichen, siehe auch C- Vorlesung) 78

Zeichendarstellungen ASCII - Tabelle: Das erste Bit verwendete man früher als Kontrollbit für die Datenübertragung: Auf 0 oder 1 gesetzt, je nachdem ob die Anzahl der 1-en an den übrigen 7 Bitpositionen gerade (even) oder ungerade (odd) ist Ergebnis: Gesamtanzahl der 1-en immer gerade (even parity). Folgerung: Erkenne, wenn bei Übertragung ein Bit verfälscht wurde Später: ASCII zur Speicherung, verbesserte Datenübertragung Kein Kontrollbit mehr, ASCII um 128 Zeichen erweitert (es existieren mehrere unterschiedliche Erweiterungen - deutsche Umlaute, Sonderzeichen anderer Sprachen, ) 79

Zeichendarstellungen ASCII Tabelle, Beispiele: Zeichen dezimal binär 0 48 0110000 9 57 0111001 A 65 1000001 B 66 1000010 a 97 1100001 b 98 1100010 (Groß- und Kleinbuchstaben in alphabetischer Reihenfolge) 80

Zeichendarstellungen Unicode Tabelle: 256 Zeichen reichen nicht für alle Sprachen aus Mit Unicode kann man alle jemals von Menschen verwendeten Schriftzeichen speichern MS-Office 2000, OpenOffice und jedes andere moderne Programm erkennt automatisch, ob ein Text im alten ASCII-Code oder im neuen Unicode gespeichert ist 81

Zeichendarstellungen Unicode Tabelle: Zeichen codiert gemäß UCS (Universal Character Set): Zeichen 0 127: wie ASCII Zeichen 128 255: wie Latin-1-Erweiterung von ASCII verwendet 32 Bits mit führenden 0en UCS-Code eingebettet in syntaktisches Format mit Kontrollbits: UTF: Unicode-Transformation-Format Erkennen von Zeichengrenzen, Korrektheitstest 82

Zeichendarstellungen Unicode Tabelle: Verschiedene Versionen: UTF-32, UTF-16, UTF-8 können alle den kompletten Zeichensatz darstellen sind verlustfrei in jeweils andere Darstellung transformierbar UTF-32: fixe Länge für alle Zeichen (32 Bit) UTF-16,UTF-8: unterschiedliche Längen für verschiedene Zeichen (führende 0en zum Teil weglassen) UTF-8: am weitesten verbreitete Darstellung, Quasi-Standard 83

Zeichendarstellungen Unicode Tabelle, Beispiel UTF-8 : 7-Bit ASCII-Zeichen: werden mit einem Byte kodiert, in der Form 0<ASCII-Code> andere: verwenden zwischen 2 und 4 Bytes Code beginnt mit 1 n-byte-zeichen: Erstes Byte beginnt mit n 1-en mit einer anschließenden 0 Jedes Folgebyte beginnt mit 10 Übrige Bits: Kodierung eines Unicode-Zeichens mit UCS (weglassen überschüssiger führender 0en) 84

Zeichendarstellungen Unicode Tabelle, Beispiel UTF-8 : Wird von Java unterstützt, aber im allgemeinen nicht von höheren Programmiersprachen (auch nicht von C) 1-Byte-Codes: 0xxx xxxx 2-Byte-Codes: 110x xxxx 10xx xxxx 3-Byte-Codes: 1110 xxxx 10xx xxxx 10xx xxxx 4-Byte-Codes: 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx 85

Zusammenfassung Daten werden über dem Alphabet {0,1} codiert mit endlich vielen Bits Wir haben verschiedene Codierungen für unterschiedliche Datentypen kennengelernt In den verschiedenen Codierungen können identische Codeworte vorkommen Wie ein Codewort interpretiert wird, hängt von der Codierung (also dem Datentyp) ab! Welche und wieviele Werte codiert werden (können), hängt von der Anzahl der verwendeten Bits ab 86