Vorlesung Informatik I

Ähnliche Dokumente
Vorlesung Informatik I

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

2 Repräsentation von elementaren Daten

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

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

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

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

2.1 Fundamentale Typen

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

, 2017S Übungstermin: Di.,

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

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

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

Rundungsfehler-Problematik bei Gleitpunktzahlen

5 Zahlenformate und deren Grenzen

2.1.2 Gleitkommazahlen

Wertebereiche, Overflow und Underflow

2 ARITHM. UND LOG. AUSDRÜCKE ZAHLEN

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

Abschnitt 2: Daten und Algorithmen

N Bit Darstellung von Gleitkommazahlen

Grundlagen der Technischen Informatik. 4. Übung

Einführung in die Informatik I

2 Darstellung von Zahlen und Zeichen

Numerik. Festpunkt-Darstellung

Vorlesung Programmieren

Der Zahlenformatstandard IEEE 754

1. Rechnerzahlen, Kondition, Stabilität

6.2 Kodierung von Zahlen

IEEE 754 Encoding. Wie stellt man im IEEE 754 Format eigentlich die 0 dar!? Double Precision (Bias=1023)

, 2015S Übungstermin: Mi.,

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

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

Zwischenklausur Informatik, WS 2014/15

Kapitel 5: Darstellung von Daten im Rechner

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

Grundlagen der Datenverarbeitung

7. Übung zur Vorlesung Grundlagen der Informatik

Einführung in die Programmiertechnik

Technische Informatik (RO)

3. Datentypen, Ausdrücke und Operatoren

Computerarithmetik (6a)

Vorzeichenbehaftete Festkommazahlen

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

Numerische Lineare Algebra

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

Grundzüge der Informatik Tutorium Gruppe 6

Darstellung rationaler und reeller Zahlen Vorlesung vom

Zahlen in Binärdarstellung

Grundlagen der Informatik

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Daten und Algorithmen

2.5 Primitive Datentypen

Das Verfahren in Hardware

Das Rechnermodell - Funktion

II. Grundlagen der Programmierung

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

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

Datendarstellung Teil 2

Das Maschinenmodell Datenrepräsentation

Numerische Verfahren und Grundlagen der Analysis

Rechnergrundlagen SS Vorlesung

Zahlensysteme und Kodes. Prof. Metzler

Rechnerorganisation. IHS 2015/2016 H.-D. Wuttke, K. Henke

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

Information und ihre Darstellung

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Hochschule Niederrhein Einführung in die Programmierung Prof. Dr. Nitsche. Bachelor Informatik WS 2015/16 Blatt 3 Beispiellösung.

Computer-orientierte Mathematik

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

02 - Numerik. Technische Grundlagen der Informatik

2 Darstellung von Zahlen und Zeichen

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

2 Rechnen auf einem Computer

Grundlagen der Programmierung

Transkript:

Vorlesung Informatik I Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Theorie: 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

Motivation Welche Zahlen sollen (exakt) codiert werden (zusammenhängender Bereich, ganze/gebrochene/reelle Zahlen?) Wie codiert man negative Zahlen? Mit welcher Genauigkeit (Rundungsfehler) codiert man reelle Zahlen?... Inhalt 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

Notationen Ab jetzt benutzen wir ausschließlich n-bit-blockcodierungen Jedes Wort (der Länge n) über dem Alphabet {0,1} bezeichnen wir als Bitmuster (der Länge n) 6

Notationen c <Name>,n Bezeichnung einer Codierung <Name> n Abkürzung für den Namen der Codierung Anzahl der verwendeten Bit c <Name>,n (x) das zur Zahl x gehörende Bitmuster bzgl. der Codierung c <Name>,n 7

Notationen (b) <Name>,n Dekodierung des Bitmusters b: Zahl mit c <Name>,n ((b) <Name>,n ) = b b <Name> n ein Bitmuster Abkürzung für den Namen der Codierung Anzahl der verwendeten Bit 8

Binärdarstellung c 2,n :{0,..., 2 n -1} IB n Binärdarstellung in n Stellen, aufgefüllt mit führenden Nullen Beispiele: c 2,8 (7)=00000111, (00000111) 2,8 =7 Ungeeignet für negative Zahlen Was tun bei Bereichsüberschreitung? 9

Für Binärdarstellung: Dekodierung c 2,n (x) = b n-1... b 1 b 0 gilt x = (b n-1... b 1 b 0 ) 2,n = Σ b i 2 i Berechnungschema: Addiere 2er-Potenzen 2 n-1 4 2 1 b n-1 b 2 b 1 b 0 10

Darstellung auch negativer Zahlen 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) 11

Vorzeichen-Betrag-Darstellung (VB) c VB,n :{-(2 n-1-1),...,-0,+0,1,...,2 n-1-1} 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 Beispiele c VB,8 (7)= 0c 2,7 (7)=00000111, (1111) VB,4 =-(111) 2,3 =-7 12

Für VB-Darstellung: Dekodierung c VB,n (x) = b n-1... b 1 b 0 gilt n-2 x = (b n-1... b 1 b 0 ) VB,n = (+/-) Σ b i 2 i i = 0 b n-1 = (0/1) +/- 2 n-2 4 2 1 0/1 b n-2 b 2 b 1 b 0 13

VB-Darstellung: Dekodierung + 64 32 16 8 4 2 1 0 1 0 0 1 1 0 1 c VB,8 (01001101) = +(64 + 8 + 4 + 1) = 77 14

VB-Darstellung: Arithmetik aufwendig...selbst überlegen: z.b. postive Zahl + negative Zahl = positive/negative Zahl?: Fallunterscheidung nötig Wird in der Praxis nicht verwendet 15

Exzeß-q-Darstellung (Eq) c EX-q,n :{-q,...,0,1,...,2 n 1 q} IB n c Ex-q,n (x) := c 2,n (x+q) q ganze nicht-negative Zahl Beispiele: c Ex-32,8 (7)=c 2,8 (7+32)=c 2,8 (39)=00100111 (0001) Ex-8,4 =(0001) 2,4-8=1-8=-7 16

Eq-Darstellung: In der Praxis q=2 n-1 Codes für negative Zahlen Codes für nicht-negative Zahlen 0 2 n-1-1 2 n -1 q=2 n-1 1 Codes für nicht-positive Zahlen Codes für positive Zahlen 0 2 n-1-1 2 n -1 17

Für Eq-Darstellung: Dekodierung 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 q 2 n-1 4 2 1-1 b n-1 b 2 b 1 b 0 18

Eq-Darstellung: Dekodierung 63 64 32 16 8 4 2 1-1 1 0 0 1 1 0 1 c Ex-q,7 (1001101) = 64 + 8 + 4 + 1-63 = 14 19

Eq-Darstellung: Arithmetik Sei + die Addition, - die Subtraktion auf Dualzahlen Addition (auf Exzeß-q-Darstellungen) (x, y) c + x + y c (c(x),c(y)) c(x + y) = c(x) c(y) 20

Eq-Darstellung: Arithmetik Addition (auf Exzeß-q-Darstellungen) c Ex-q,n (x) c Ex-q,n (y) = c Ex-q,n (x+y) = c 2,n (x+y+q) = c 2,n (x+q) + c 2,n (y+q) - c 2,n (q) = 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 21

Eq-Darstellung: Arithmetik Sei + die Addition, - die Subtraktion auf Dualzahlen Subtraktion Θ (auf Exzeß-q-Darstellungen) (x, y) c - x - y c (c(x),c(y)) Θ c(x - y) = c(x) Θ c(y) 22

Eq-Darstellung: Arithmetik Subtraktion Θ (auf Exzeß-q-Darstellungen) c Ex-q,n (x) Θ c Ex-q,n (y) = c Ex-q,n (x-y) = c 2,n (x-y+q) = c 2,n (x+q) c 2,n (y+q) + c 2,n (q) = 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 23

Eq-Darstellung: Arithmetik Bereichsüberlauf bei Addition/Subtraktion Ergebnis > 2 n 1-q Ergebnis < -q führt in C-Programmen zu undefiniertem Verhalten 24

Eq-Darstellung: Arithmetik Multiplikation/Division: aufwendig Wird zur Darstellung des Exponenten bei Gleitpunktdarstellungen verwendet: da braucht man nur Addition / Subtraktion (später) 25

Komplement-Darstellungen 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 26

Komplement-Darstellungen 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) 27

2-Komplement-Darstellung (2K) Grundidee Wähle k so, dass Komplementbildung und Subtraktion von k leicht realisierbar sind: k = 2 n (2-Komplement) Codes für nicht-negative Zahlen Codes für negative Zahlen 0 x 2 n-1 2 n -x 2 n -1 28

2K-Darstellung: Definition c 2K,n : {-2 n-1,...,0,1,...,2 n-1 1} 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 Codes für nicht-negative Zahlen Codes für negative Zahlen 0 x 2 n-1 2 n -x 2 n -1 29

2K-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 30

2K-Darstellung: Beispiele 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 31

Für 2K-Darstellung: Dekodierung 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-2 n-1 2 n-2 4 2 1 b n-1 b n-2 b 2 b 1 b 0 32

2K-Darstellung: Dekodierung -128 64 32 16 8 4 2 1 1 1 0 0 1 1 0 1 c 2K,8 (11001101) = 64 + 8 + 4 + 1-128 = -51 33

2K-Darstellung: Arithmetik Komplementbildung x {1,...,2 n-1-1}, c 2K,n (x) = c 2,n (x) = b n-1...b 1 b 0 Es 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 34

2K-Darstellung: Arithmetik Komplementbildung Beispiele Komplementbildung = Kippen aller Bits und Addition von 1 c 2K,4 (7)= c 2,4 (7)=0111 c 2K,4 (-7)= 1000 + 0001 = 1001 35

2K-Darstellung: Arithmetik Addition (anschaulich): einer positiven Zahl y: y Schritte gegen Uhrzeigersinn. einer negativen Zahl y: y Schritte im Uhrzeigersinn. Subtraktion: Addition des Komplements 36

2K-Darstellung: Arithmetik Addition - 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) 37

2K-Darstellung: Arithmetik Addition - Beispiele c 2K,n (x) c 2K,n (y) := (c 2K,n (x) + c 2K,n (y)) modulo 2 n c 2K,4 (4) c 2K,4 (3) = (0100 + 0011) modulo 2 4 = 0111 c 2K,4 (4) c 2K,4 (-3) =(0100 + 1101) modulo 2 4 = 0001 c 2K,4 (-4) c 2K,4 (3) =(1100 + 0011) modulo 2 4 = 1111 c 2K,4 (-4) c 2K,4 (-3)=(1100 + 1101) modulo 2 4 = 1001 38

2K-Darstellung: Arithmetik Addition - Beweis 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 39

2K-Darstellung: Arithmetik Addition - Beweis 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 40

2K-Darstellung: Arithmetik Addition - Beweis 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 41

2K-Darstellung: Arithmetik Addition - Beweis 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 42

2K-Darstellung: Arithmetik Addition - Bereichsüberlauf Ergebnis im Positiven 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) 43

2K-Darstellung: Arithmetik Addition - Bereichsüberlauf - Beispiel c 2K,n (x) c 2K,n (y) := (c 2K,n (x) + c 2K,n (y)) modulo 2 n c 2K,4 (4) c 2K,4 (5) = (0100 + 0101) modulo 2 4 = 1001 = c 2K,4 (4+5-2 4 ) = c 2K,4 (-7) 44

2K-Darstellung: Arithmetik Addition - Bereichsüberlauf Ergebnis im Negativen -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) 45

2K-Darstellung: Arithmetik Addition - Bereichsüberlauf - Beispiel c 2K,n (x) c 2K,n (y) := (c 2K,n (x) + c 2K,n (y)) modulo 2 n c 2K,4 (-4) c 2K,4 (-5) = (1100 + 1011) modulo 2 4 = 0111 = c 2K,4 (-4-5+2 4 ) = c 2K,4 (7) 46

1- Komplement-Darstellung (1K) Grundidee Wähle k so, dass Komplementbildung und Subtraktion von k leicht realisierbar sind: k = 2 n -1 (1-Komplement) Codes für nicht-negative Zahlen Codes für nicht-positive Zahlen 0 x 2 n-1 2 n -x 2 n -1 47

1K-Darstellung: Definition c 1K,n : {-(2 n-1-1),...,-0,+0,1,...,2 n-1 1} 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 Codes für nicht-negative Zahlen Codes für nicht-positive Zahlen 0 x 2 n-1 2 n -x 2 n -1 48

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

1K-Darstellung: Beispiele 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 50

Für 1K-Darstellung: Dekodierung 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-2 n-1 +1 2 n-2 4 2 1 b n-1 b n-2 b 2 b 1 b 0 51

1K-Darstellung: Dekodierung -127 64 32 16 8 4 2 1 1 1 0 0 1 1 0 1 c 1K,8 (11001101) = 64 + 8 + 4 + 1-127 = -50 52

1K-Darstellung: Arithmetik Komplementbildung x {1,...,2 n-1 }, c 1K,n (x) = c 2,n (x) = b n-1...b 1 b 0 Es 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 53

1K-Darstellung: Arithmetik Komplementbildung Beispiele Komplementbildung = Kippen aller Bits c 1K,4 (7)= c 2,4 (7)=0111 c 1K,4 (-7)= 1000 54

1K-Darstellung: Arithmetik Addition (anschaulich): einer positiven Zahl y: y Schritte gegen Uhrzeigersinn. einer negativen Zahl y: y Schritte im Uhrzeigersinn. Subtraktion: Addition des Komplements 55

1K-Darstellung: Arithmetik Addition / Bereichsüberlauf - 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) 56

1K-Darstellung: Arithmetik Addition - Beispiele c 1K,n (x) c 1K,n (y) :=(c 1K,n (x) + c 1K,n (y)) modulo 2 n -1 c 1K,4 (4) c 1K,4 (3) =(0100 + 0011) modulo 2 4-1= 0111 c 1K,4 (4) c 1K,4 (-3)=(0100 + 1100) modulo 2 4-1= 0001 c 1K,4 (-4) c 1K,4 (3)=(1011 + 0011) modulo 2 4-1= 1110 c 1K,4 (-4) c 1K,4 (-3)=(1011 + 1100) modulo 2 4-1= 1000 57

1K-Darstellung: Arithmetik Addition - Bereichsüberlauf - Beispiel c 1K,n (x) c 1K,n (y) :=(c 1K,n (x) + c 1K,n (y)) modulo 2 n -1 c 1K,4 (4) c 1K,4 (5) = (0100 + 0101) modulo 2 4-1 = 1001 = c 1K,4 (4+5-(2 4-1)) = c 1K,4 (-6) 58

1K-Darstellung: Arithmetik Addition - Bereichsüberlauf - Beispiel c 1K,n (x) c 1K,n (y) :=(c 1K,n (x) + c 1K,n (y)) modulo 2 n -1 c 1K,4 (-4) c 1K,4 (-5) = (1011 + 1010) modulo 2 4-1 = 0110 = c 1K,4 (-4-5+(2 4-1)) = c 1K,4 (6) 59

Ziel: Zahlendarstellung Dezimalzahlen Darstellung von Dezimalzahlen 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? 60

n-bit-festpunktdarstellung (FP) c 2,m,k : [0,2 k 2 -(m+1) [ IB n c 2,m,k (x) = c 2,m+k (rd(x*2 m )) rd(y) = zu y nächstgelegende ganze Zahl m Anzahl Nachkommastellen k Anzahl Vorkommastellen (m+k = n) 61

FP-Darstellung: Beispiele Für nicht-negative ganze Zahlen x mit Binärdarstellung x = (b k-1...b 0.b -1...b -m ) 2 gilt c 2,m,k (x) = b k-1...b 0 b -1...b -m Diese Zahlen sind exakt (d.h. ohne Rundungsfehler) darstellbar k = n-m. m 62

FP-Darstellung: Beispiele Dezimalzahl 1.2 in 8-Bit Festpunktdarstellung mit jeweils 4 Nachkomma- und 4 Vorkommastellen (1) Multiplizieren der Zahl mit 2 4 : 1.2 * 2 4 = 19.2 (2) Auf- bzw. Abrunden in ganze Zahl: rd(19.2) = 19 (3) Dual-Darstellung mit 8 Bit: c 2,4,4 (1.2) = c 2,8 (19) = 00010011 Dekodierung und Rundungsfehler: (00010011) 2,4,4 = (1.0011) 2 = 1.1875 63

Für FP-Darstellung: Dekodierung gilt c 2,m,k (x) = b n-1... b 1 b 0 x = (b n-1... b 1 b 0 ) 2,m,k = (b n-1...b n-k.b m-1...b 0 ) 2 n-1 = Σ b i 2 i-m i=0 = (b n-1... b 1 b 0 ) 2,n / 2 m 64

FP-Darstellung: Rundungsfehler Absoluter Fehler: 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) 65

FP-Darstellung: Rundungsfehler Relativer Fehler: 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) 66

FP-Darstellung: Arithmetik Wird auf Rechenoperationen für ganze Zahlen durch Multiplizieren der Zahl mit 2 m zurückgeführt 67

FP-Darstellung: Bewertung 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) Problematisch für Rechnungen mit Zahlen unterschiedlicher Größenordnungen: Avogadrozahl: L = 6.0225 10 23 Planck Konstante: h = 6.6260755 10-34 68

n-bit-gleitpunktdarstellung (GP) c GP,k,n : [-(2-2 -k )*2 max,(2-2 -k )*2 max [ IB n 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 c 2,exp,n-k (e) = c Ex-q,n-k (e) mit q = (2 n-k-1-1) 1c 2,man,k-1 ( m ) = c 2,k-1,1 ( m ) 1 m < 2 max = 2 n-k-1-1 n-k Anzahl der Bits für den Exponenten (Charakteristik) k-1 Anzahl der Bits für die Mantisse 69

GP-Darstellung: Reservierte Bitmuster Spezielle Darstellung der 0: Spezielle Darstellung von + : Spezielle Darstellung von - : NaN (Not a number, z.b. 0/0): Denormalisierte Zahlen: Bitmuster 00 00 0 Bitmuster 01 10 0 Bitmuster 11 10 0 Bitmuster x1 1x x Bitmuster x0 0x x V Charakteristik Betrag der Mantisse n-2 k-2 0 70

GP-Darstellung: Beispiele Für Zahlen x mit Gleitpunktdarstellung x = (+/-) (1.b k-2... b 1 b 0 ) 2 *...b ) 2(b n-2 k-1 EX-q,n-k q = 2 n-k-1-1 gilt c GP,k,n (x) = (0/1)b n-2...b 0 Diese Zahlen sind exakt (d.h. ohne Rundungsfehler) darstellbar V Charakteristik Betrag der Mantisse n-2 k-2 0 71

GP-Darstellung: Beispiele Stelle die Zahl 4.6 dar in V Charakteristik Betrag der Mantisse 7 6 4 3 0 3-Bit Charakteristik (q=3): Exponent zwischen 2 (Bitmuster 001) und 3 (Bitmuster 110) 4-Bit Mantisse: Werte zwischen 1 (Bitmuster 0000) und 2-2 -4 (Bitmuster 1111) 72

GP-Darstellung: Beispiele Stelle die Zahl 4.6 dar in V Charakteristik Betrag der Mantisse 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 73

GP-Darstellung: Beispiele Stelle die Zahl 4.6 dar 0 Charakteristik Betrag der Mantisse 7 6 4 3 0 (2) Vorzeichen bestimmen: 0 für positive Zahl 74

GP-Darstellung: Beispiele Stelle die Zahl 4.6 dar 0 1 0 1 Betrag der Mantisse 7 6 4 3 0 (3) Charakteristik bestimmen: c 2,exp,3 (2) = c EX-3,3 (2) = c 2,3 (2+3) = 101 75

GP-Darstellung: Beispiele 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 76

GP-Darstellung: Beispiele Stelle die Zahl 4.6 dar 0 1 0 1 0 0 1 0 7 6 4 3 0 Dekodierung und Rundungsfehler: (01010010) GP,5,8 = (1.0010) 2 *2 (101) EX-3,3 = (100.1) 2 = 4.5 77

GP-Darstellung: Dekodierung 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 * 2 mit b n-1 =(0/1) und q = 2 n-k-1-1 (b...b ) n-2 k-1 EX-q,n-k V Charakteristik Betrag der Mantisse n-2 k-2 0 78

GP-Darstellung: Weitere Beispiele Kleinste positive darstellbare normalisierte Zahl: V Charakteristik Betrag der Mantisse 7 6 4 3 0 Kleinster Exponent (Bitmuster 0 0 schon vergeben): (001) 2,exp,3 = (001) Ex-3,3 = (001) 2,3-3 = 1-3 = -2 Kleinste Mantisse: (0000) 2,man,4 = (10000) 2,4,1 = (1.0000) 2 Ergebnis: (00010000) GP,4,8 = (1.0000) 2 *2-2 = (0.01) 2 = 0.25 79

GP-Darstellung: Weitere Beispiele Größte positive darstellbare normalisierte Zahl: V Charakteristik Betrag der Mantisse 7 6 4 3 0 Größter Exponent (Bitmuster 1 1 schon vergeben): (110) 2,exp,3 = (110) EX-3,3 = (110) 2,3-3 = 6-3 = 3 Größte Mantisse: (1111) 2,man,4 = (11111) 2,4,1 = (1.1111) 2 Ergebnis: (01101111) GP,4,8 = (1.1111) 2 *2 3 = (1111.1) 2 = 15.5 80

GP-Darstellung: Standards IEEE-Standard 754 - einfache Genauigkeit (Datentyp float): [IEEE: Institute of Electrical and Electronics Engineers] V Charakteristik Betrag der Mantisse 31 30 23 22 0 8-Bit Charakteristik (q = 127): Exponent zwischen 126 (Bitmuster 0...01) und 127 (Bitmuster 1...10) (23 + 1)-Bit Mantisse: Werte zwischen 1 (Bitmuster 0...0) und 2-2 -23 (Bitmuster 1...1) 81

GP-Darstellung: Standards IEEE-Standard 754 - Doppelte Genauigkeit (Datentyp double): V Charakteristik Betrag der Mantisse 63 62 52 51 0 11-Bit Charakteristik (q = 1023): Exponent zwischen 1022 (Bitmuster 0...01) und 1023 (Bitmuster 1...10) (52 + 1)-Bit Mantisse: Werte zwischen 1 (Bitmuster 0...0) und 2-2 -52 (Bitmuster 1...1) 82

GP-Darstellung: Standards IEEE-Standard 754 - Erweiterte Genauigkeit: V Charakteristik Betrag der Mantisse 79 78 64 63 0 15-Bit Charakteristik: Exponent zwischen (2-14 -2) (Bitmuster 0...01) und (2 14-1) (Bitmuster 1...10) (64 + 1)-Bit Mantisse: Werte zwischen 1 (Bitmuster 0...0) und 2-2 -64 (Bitmuster 1...1) 83

GP-Darstellung: Rundungsfehler Absoluter Fehler: 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 - Einfache Genauigkeit: auf 6 Vor- + Nachkommastellen e=0: 23 Binärnachkommastellen ~ 6 Dezimalstellen e>0: Genauigkeitsverlust bei Nachkommastellen = Anzahl Vorkommastellen 84

GP-Darstellung: Rundungsfehler Relativer Fehler: 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: - Einfache Genauigkeit: 2-24 - Doppelte Genauigkeit: 2-53 - Erweitere Genauigkeit: 2-65 85

GP-Darstellung: Arithmetik Wie Arithmetik normierter Gleitpunktzahlen: Addition/Subtraktion: - Exponentenangleich = Kommaverschiebung bei Mantisse - Mantissen addieren/subtrahieren - Neu normieren = Kommaverschiebung bei Mantisse 86

GP-Darstellung: Arithmetik Wie Arithmetik normierter Gleitpunktzahlen: Multiplikation/Division: - Exponenten addieren/subtrahieren: Auf Exzeß-q-Darstellung - Mantissen multiplizieren/dividieren - Neu normieren Ausnahmefälle: Bereichsüberlauf oder -unterschreitung bei Darstellung des Exponenten ( overflow / underflow, z.b. bei Multiplikation sehr großer/kleiner Zahlen ) 87

GP-Darstellung: Arithmetik Große Rundungsfehler möglich: durch Exponentenangleich bei Addition sehr unterschiedlich großer Zahlen und Stellenauslöschung bei Subtraktion gleich großer Zahlen: (1.0*2-9 + 1.0*2 23 )-2 23 = (2-32 +1.0)*2 23-2 23 = 0 2-9 +(1.0*2 23-1.0*2 23 ) = 2-9 +(1.0-1.0)*2 23 = 2-9 2 23 *((2-9 +2 23 )-2 23 )=0 2 23 *(2-9 +(2 23-2 23 ))=2 14 88

GP-Darstellung: 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) 89

GP-Darstellung: 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 < ε überprüfen nicht x = y, sondern x - y < ε überprüfen 90

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) 91

Zeichendarstellungen: ASCII 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) 92

Zeichendarstellungen: ASCII 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 93

Zeichendarstellungen: ASCII Heute wird ASCII zur Speicherung verwendet, Datenübertragung ist verbessert - Kein Kontrollbit mehr - ASCII um 128 Zeichen erweitert es existieren mehrere unterschiedliche Erweiterungen: deutsche Umlaute, Sonderzeichen anderer Sprachen, 94

Zeichendarstellungen: ASCII 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) 95

Zeichendarstellungen: UNICODE 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 96

Zeichendarstellungen: UNICODE 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 97

Zeichendarstellungen: UNICODE 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 98

Zeichendarstellungen: UTF-8 7-Bit ASCII-Zeichen: - werden mit einem Byte kodiert - 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 99

Zeichendarstellungen: 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 100

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 101