Vorlesung Programmieren

Ähnliche Dokumente
Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

Programmieren. Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 2008/2009. Prof. Dr. Christian Werner

Übung Programmieren - Zahlendarstellung, SSH, SCP, Shellskripte -

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

2 Darstellung von Zahlen und Zeichen

Zahlen in Binärdarstellung

Einführung in die Informatik I

Zahlensysteme und Kodes. Prof. Metzler

Übung Praktische Informatik II

Grundlagen der Technischen Informatik. 4. Übung

Musterlösung 1. Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016

6.2 Kodierung von Zahlen

Kapitel 2 Grundlegende Konzepte. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

There are only 10 types of people in the world: those who understand binary, and those who don't

2 Repräsentation von elementaren Daten

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

Wertebereiche, Overflow und Underflow

Rechnergrundlagen SS Vorlesung

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

1. Tutorium Digitaltechnik und Entwurfsverfahren

01 - Zahlendarstellung

Basisinformationstechnologie I

Einführung in die Informatik I

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Das Rechnermodell - Funktion

Grundlagen der Technischen Informatik. 3. Übung

Kapitel 5: Daten und Operationen

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

2 Darstellung von Zahlen und Zeichen

Grundlagen der Technischen Informatik. 3. Übung. Christian Knell Keine Garantie für Korrekt-/Vollständigkeit

Computergrundlagen Zahlensysteme

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Kapitel 5: Darstellung von Daten im Rechner

2.1.2 Gleitkommazahlen

Das Maschinenmodell Datenrepräsentation

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

2 Darstellung von Zahlen und Zeichen

Inhalt: Binärsystem 7.Klasse - 1 -

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Einführung in die Informatik

Einführung in die Informatik

Numerisches Programmieren

1. 4-Bit Binärzahlen ohne Vorzeichen 2. 4-Bit Binärzahlen mit Vorzeichen 3. 4-Bit Binärzahlen im 2er Komplement 4. Rechnen im 2er Komplement

Repräsentation von Daten: Binär-, Oktal- u. Hexadezimalcodierung von ganzen und rationalen Zahlen

Rechnergrundlagen SS Vorlesung

Grundlagen der Technischen Informatik. 4. Übung

5 Zahlenformate und deren Grenzen

Grundlagen der Informatik I ATI / MB

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

, 2015S Übungstermin: Mi.,

Binäre Gleitkommazahlen

Zahlensysteme Seite -1- Zahlensysteme

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

Grundlagen der Technischen Informatik. 4. Übung

Informatik I Modul 2: Rechnerarithmetik (1)

Vorzeichenbehaftete Festkommazahlen

Modul 2: Rechnerarithmetik (1) Informatik I. Modul 2: Rechnerarithmetik (1) Rechnerarithmetik. Formale Grundlagen. Zahlensysteme (1) Zahlensysteme (2)

Wandeln Sie die folgenden Zahlen in Binärzahlen und Hexadezimalzahlen. Teilen durch die Basis des Zahlensystems. Der jeweilige Rest ergibt die Ziffer.

GTI ÜBUNG 4 BINÄR-, HEX- UND GLEITKOMMAZAHLEN-ARITHMETIK

Binärdarstellung von Fliesskommazahlen

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

Einführung in die Programmiertechnik

Grundlagen der Technischen Informatik. 4. Übung

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

4. Zahlendarstellungen

Kapitel 2. Zahlensysteme, Darstellung von Informationen

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

1.5 Einführung und Zahlensysteme/Darstellung gebrochener Zahlen

Technische Grundlagen der Informatik Kapitel 8. Prof. Dr. Sorin A. Huss Fachbereich Informatik TU Darmstadt

Einführung in die Programmierung

Technische Informatik I

Grundlagen der Informatik 2 Grundlagen der Digitaltechnik. 1. Zahlensysteme

Warum Computer doch nicht so präzise rechen. Thomas Staub. Gleitkommazahlen: Gleitkommazahlen Thomas Staub lerntool.ch 2016

Arithmetik: Vorzeichenregeln und Überlauf, Exponenten & Normalisierung, Umrechnungen. Architektur: - Rechnerarchitektur, Instruktionssatz, Assembler

Einführung in die Computerorientierte Mathematik

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

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

Grundlagen der Informatik

Kapitel 2. Zahlensysteme

Zwischenklausur Informatik, WS 2014/15

Grundzüge der Informatik Tutorium Gruppe 6

4. Zahlendarstellungen

Grundlagen der Datenverarbeitung - Zahlensysteme

Grundzüge der Informatik Zahlendarstellungen (7)

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

2.Vorlesung Grundlagen der Informatik

Computer Arithmetik. Computer Arithmetik Allgemein

TI II: Computer Architecture Data Representation and Computer Arithmetic

Zahlensysteme. von Christian Bartl

TOTAL DIGITAL - Wie Computer Daten darstellen

RO-Tutorien 3 / 6 / 12

Informatik Übungsaufgaben

Transkript:

Vorlesung Programmieren Zahlendarstellung Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer

Agenda Zahlendarstellung Oder: wie rechnen Computer? Security - 04 Cryptology #2

Dezimalsystem Normal rechnen wir im Dezimalsystem Basis 10 10 verschiedene Symbole (0 bis 9) zur Zahlendarstellung vorhanden Größere Zahlen werden durch Sequenz von Symbolen gebildet Stelle bestimmt Wertigkeit des Symbols 0 + 1 = 1 1 + 1 = 2 2 + 1 = 3 3 + 1 = 4 4 + 1 = 5 5 + 1 = 6 6 + 1 = 7 7 + 1 = 8 8 + 1 = 9 9 + 1 = 10 Security - 04 Cryptology #3

Dezimalsystem Darstellung von Zahlen in Summenform möglich 1 10 0 1 10 0 10 10 1 1 10 1 100 10 2 1 10 2 Beispiele 20 = 2 10 1 + 0 10 0 1024 = 1 10 3 + 0 10 2 + 2 10 1 + 4 10 0 1.000 10 3 1 10 3 10.000 10 4 1 10 4 100.000 10 5 1 10 5 Security - 04 Cryptology #4

Generalisierung: Andere Basen Wir verwenden (normalerweise) das Dezimalsystem Sehr einfach, damit (als Mensch) zu rechnen Man kann jedoch auch Zahlensysteme mit beliebigen anderen Basen verwenden z.b. zur Basis b = 2, 3, 8, 16 oder 34 Unterscheidung von Zahlen verschiedener Basen Optional: tiefgestellte Angabe der Basis 12 zur Basis 10: 12 10 12 zur Basis 16: 12 16 Security - 04 Cryptology #5

Generalisierung: Andere Basen Man benötigt b verschiedene Symbole zur Darstellung Beispiel: b = 11 Symbole: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A Rechnen: 0+0 = 0, 9+1 = A oder 9+2 = 10 Symbole: A, B, C, D, E, F, G, H, I, J, K Rechnen: A+A = A, J+B=K oder J+C = BA Security - 04 Cryptology #6

Wichtiges Zahlensystem: Binärsystem Um die technische Realisierung möglichst einfach zu halten, arbeitet ein moderner Rechner binär Binär: Zwei Zustände Mögliche Symbole An, aus Strom, kein Strom 0, 1 A, B Security - 04 Cryptology #7

Binärsystem Symbole: 0 und 1 Eine Binärziffer heißt Bit (binary digit) Folge von 8 Bit heißt Byte Rechnen 0 + 0 = 0 1 + 0 = 0 1 + 1 = 10 Basis 2 Basis 2 Basis 10 0 + 1 = 1 1 1 + 1 = 10 2 10 + 1 = 11 3 11 + 1 = 100 4 100 + 1 = 101 5 101 + 1 = 110 6 110 + 1 = 111 7 111 + 1 = 1000 8 1000 + 1 = 1001 9 1001 + 1 = 1010 10 Security - 04 Cryptology #8

Binärsystem und Computer Computer besitzen Arbeitsspeicher Besteht aus Menge von 1-Bit Speichern Jeweils Gruppe von 8 speichert ein Byte Jedes Byte ist unter einer bestimmten Adresse erreichbar Jedes Byte kann individuell gelesen und geschrieben werden Bit-weiser Zugriff nicht möglich Arbeitsspeicher 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1... 0 0 0 0 0 0 0 1 0003 0 0 1 1 1 0 1 0 0002 0 1 0 1 0 1 0 0 0001 0 0 0 0 1 0 1 0 Beispiel (Pseudocode) setze_adresse[3] = 58 10 gebe_aus_adresse[3] 58 10 Security - 04 Cryptology #9

Darstellung von Zahlen im Binärsystem Analog zum Dezimalsystem Beispiel 101 2 Basis 10: 1 2 2 + 0 2 1 + 1 2 0 Basis 2: 1 10 10 + 0 10 1 + 1 10 0 Diese Darstellung erlaubt einfaches Umrechnen in andere Zahlensysteme Basis 2 Basis 10 Basis 2 1 2 0 10 0 10 2 1 10 1 100 2 2 10 10 1000 2 3 10 11 10000 2 4 10 100 100000 2 5 10 101 Security - 04 Cryptology #10

Beziehung Dezimal- Binärsystem Beispiel: 14 Zahlenbasis 10 : Tausender Hunderter Zehner Einer 10 3 = 1000 10 10 2 = 100 10 10 1 = 10 10 10 0 = 1 10 0 0 1 4 Zahlenbasis 2 : 3 2 1 0 10 + 0 10 + 1 10 + 4 10 0 2 3 = 8 10 2 2 = 4 10 2 1 = 2 10 2 0 = 1 10 1 1 1 0 3 2 1 1 2 + 1 2 + 1 2 + 0 2 0 11

Beispiel: 1110 2 Umrechnung: Binär- nach Dezimalsystem 2 3 2 1 2 1 + + 6 7 2 0 2 1 + + Beispiel: 10010111 2 12 10 0 1 14 2 0 2 1 = + 10 0 1 2 3 4 5 151 2 1 2 1 2 1 2 0 2 1 2 0 = + + + + +

Umrechnung: Dezimal- nach Binärsystem Horner-Schema 14 7 3 1 2 2 2 2 = 7R0 Least significant bit (LSB) = 3R1 = 1 R1 = 0R1 Most significant bit (MSB) 1110 MSB LSB 13

Hexadezimalsystem (zur Basis 16) Neben dem Binärsystem gibt es für den Programmierer noch ein weiteres wichtiges Zahlensystem Das Hexadezimalsystem, kurz: hex 16 Ziffern: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f a bis f stehen für die Zahlen 10 bis 15 Groß-/Kleinschreibung unerheblich (a = A) Umrechnung zwischen Dezimal und Hex analog zum Binärsystem 14

Dezimal-, Binär- & Hexadezimalsystem Beispiel: 253 Zahlenbasis 10 : Zahlenbasis 2 : Hunderter Zehner Einer 10 2 10 1 10 0 2 5 3 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 1 1 1 1 0 1 Zahlenbasis 16 : 16 1 16 0 f d 1 15 16 + 13 16 0 15

Verwendung des Hexdezimalsystems Programmierer verwenden oft Hex-Schreibweise Ziel: Binärzahlen kompakter schreiben Eine Hex-Ziffer entspricht immer vier Bit Bytes werden oft als Folge von zwei Hex-Ziffern angegeben 240 13 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 1 1 1 1 0 1 16 1 16 0 f d 16

Rechnen mit binären Zahlen

Rechnen mit binären Zahlen Binäre Darstellung genügt, um alle Rechenaufgaben durchzuführen Alle Grundrechenarten lassen sich auch im binären Zahlensystem durchführen 18

Binäre Addition Wiederholung: Addition im Dezimalsystem 14 + 19 33 Identisches Vorgehen im Binärsystem 1110 + 10011 100001 19

Binäre Subtraktion Wiederholung: Subtraktion im Dezimalsystem 14 2 12 Identisches Vorgehen im Binärsystem 1110 10 1100 20

Binäre Multiplikation Multiplikation im Dezimalsystem 1 4 x 1 7 1 4 9 8 2 3 8 Identisches Vorgehen im Binärsystem 1 1 1 0 x 1 0 0 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 21

Wiederholung: Division im Dezimalsystem 2 3 2 / 3 = 7 7 R 1 2 1 2 2 2 1 1 Identisches Vorgehen im Binärsystem 1 1 1 0 1 0 0 0 / 1 1 = 1 0 0 1 1 0 1 R 1 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 22

Zwischenergebnis Alle Grundrechenarten funktionieren auch im Binärsystem Natürlich auch in allen anderen Zahlensystemen Insbesondere auch im Hexadezimalsystem Bisher: Nur positive ganze Zahlen Wie geht man mit vorzeichenbehafteten ganzen Zahlen um? Wie stellt man -7 im Computer dar? 23

Negative Zahlen

Negative Binärzahlen mit Vorzeichenbit Beispiel: 3-Bit-Zahlen Vorzeichen Bit 1 Bit 0 Dezimalwert 1 1 1-3 1 1 0-2 1 0 1-1 1 0 0-0 0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 Bewertung: Prinzipiell ok Nachteile: Zwei Nullen VZ-Bit muss ausgewertet werden Für Maschinen nicht optimal 25

Negative Binärzahlen im Einerkomplement Zur Vorzeichenumwandlung (+ - bzw. -+) wird jedes Bit invertiert Beispiel: -7 10 Darstellung als 4-Bit Binärzahl: -0111 2 Bitweise invertiert: 1000 2 Erstes Bit 1: negative Zahl Zahlenwert bestimmen: Invertieren 1000 2-0111 2-7 10 Security - 04 Cryptology #26

Negative Binärzahlen im Einerkomplement Es ergibt sich folgender Zusammenhang: 1001-7 1000 0111-6 6 7 0110-5 5 1010 0101 1011-4 negative Zahlen positive Zahlen 4 0100 1100-3 3 0011 1101-2 2 0010 1110-1 0 1 0001 1111 0000 27

Negative Binärzahlen im Einerkomplement Vorteile Einerkomplementzahlen können prinzipiell direkt (d.h. bitweise) addiert werden! Beispiel: 3 7 = 3 + (-7) Nachteile Problem: Round Carry: siehe nächste Folie Zwei Nullen Security - 04 Cryptology #28

Addition im Einerkomplement: 4+(-2) Problem bei Addition: Round Carry 0100 + 1101 Übertrag! (1)0001 + 0001 0010 29

Negative Binärzahlen im 2er-Komplement Alternative zum 1er-Komplement Vorzeichenumwandlung Invertiere bitweise und addiere 1 Alternativ: 1er-Komplement + 1 Beispiel: -7 10-0111 2 invertiere(0111 2 ) +1 2 1000 2 + 1 2 1001 2 Security - 04 Cryptology #30

Negative Binärzahlen im 2er-Komplement Positive Zahlen: Höchstes Bit ist 0 1010 1001-6 -7 1000-8 -5 5 1011 0101 7 0111 6 0110 Negative Zahlen: Höchstes Bit ist 1 1101-4 -3 1110-2 1111-1 0 0000 1 2 0001 4 3 0010 0100 0011 31

Addition im 2er-Komplement Beispiel: 4+(-2) Als 4-Bit Zahl 0100 4 10 = 0100 2-2 10 = 1110 2 2er-Komplementdarstellung ist sehr praktisch! Moderne Rechner arbeiten mit dieser Darstellung + 1110 10010 0010 Übertrag kann ignoriert werden 32

2er-Komplement und moderne Rechner Ganze Zahlen werden im Arbeitsspeicher in 2er- Komplementdarstellung abgelegt Man sieht der binären Repräsentation der Zahl nicht an, dass sie im 2er-Komplement dargestellt ist Es könnte auch eine 4-Bit positive Zahl sein Es kommt darauf an, wie man dieses Muster interpretiert Arbeitsspeicher 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1... 0 0 0 0 0 0 0 1 0003 0 0 1 1 1 0 1 0 0002 0 1 0 1 0 1 0 0 0001 0 0 0 0 1 0 1 0 Security - 04 Cryptology #33

Reelle Zahlen

Darstellung reeller Zahlen Bisher nur ganze Zahlen betrachtet Für viele Aufgaben benötigt man jedoch reelle Zahlen Wie stellt man diese im Computer dar? Antwort: gar nicht Computer haben nur einen endlichen Speicher Unmöglich potentiell unendlich lange Zifferfolgen darzustellen Aber: Man kann auf einige Nachkommastellen genau rechnen 35

Festkommadarstellung Typischerweise hat man im Computer eine feste Anzahl an Speicher für eine Zahl verfügbar Eine Möglichkeit: Diese Anzahl aufteilen in Teil vor dem Komma und dahinter Beispiel im Dezimalsystem: je 3 Stellen vor und nach dem Komma Es sind je 1000 Zahlen darstellbar Diese sind in jeweils 1000 Teilschritte unterteilt Beispiel: 175,381 Hunderter Zehner Einer Zehntel Hundertstel Tausendstel 10 2 10 1 10 0 10-1 10-2 10-3 1 7 5 3 8 1 36

Festkommadarstellung Äquivalente Darstellung im Binärsystem möglich Annahme: 32 Bit Breite Ergibt 16 Binärstellen und 16 binäre Nachkommastellen Damit sind 65.536 Zahlen darstellbar Diese sind jeweils wieder in 65.536 Teilschritte unterteilt Beispiel: 1001 0110 1010 0001, 1010 0101 0000 0010 2 15 2 14 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 2-11 2-12 2-13 2-14 2-15 2-16 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 37

Festkommadarstellung (Umrechnungen) Binärsystem Dezimalsystem (siehe weiter vorne) Dezimalsystem Binärsystem Ebenfalls mit Horner-Schema Getrennte Berechnung von Vor- und Nachkommateil Vorkommateil: Division durch 2 mit Rest Nachkommaanteil: Division Multiplikation! (wegen negativer Exponenten) Beispiel: Umrechnung von 14, 1 (nächste Folie) 38

Beispiel: 14,1(nur Vorkommateil 14) Ergebnis: 1110 14 / 2 = 7 R 0 LSB 7/2 = 3 R 1 3/2 = 1 R 1 1/2 = 0 R 1 MSB 39

Beispiel: 14,1(nur Nachkommateil 0,1) 0,1 von dezimal nach binär 0,1 x 2 = 0,2 = 0,2 + 0 MSB 0,2 x 2 = 0,4 = 0,4 + 0 0,4 x 2 = 0,8 = 0,8 + 0 0,8 x 2 = 1,6 = 0,6 + 1 0,6 x 2 = 1,2 = 0,2 + 1 0,2 x 2 = 0,4 = 0,4 + 0 LSB Ergebnis (mit 16 Bit): 0, 0001 1001 1001 1001 Erstaunlich: Nachkommateil ist periodisch Darstellung mit endlicher Bitanzahl ist nicht exakt! Dennoch muss man irgendwann abschneiden (z.b. nach 16 Bit) 40

Fließkommazahlen Wertebereich und Genauigkeit von Festkommazahlen oft zu gering Große Zahlen: Wunsch nach größerem Wertebereich Nachkommateil nicht so relevant Beispiel: 343847348734734,01 Kleine Zahlen: Wunsch nach mehr Nachkommastellen Dafür ist vor dem Komma nicht so viel Spielraum Beispiel: 1,3434378343784384 Lösungsansatz Schreibe Zahl D als Produkt aus Festkommazahl und Potenz D = X * 10 Y (X, 10 und Y sind Dezimalzahlen!) Bekannt aus dem Physikunterricht: 1,5637 * 10-6 m/s² 41

Fließkommazahlen Exponent bewirkt Verschiebung des Kommas Daher der Name Fließkommazahl Beispiel: 101,1 * 10 11 = 101100,0 Mantisse Exponent (Achtung: Alles Binärzahlen) Sinnvoll: Mantisse mit 1 beginnen zu lassen Also 1,xxxxxx Die Kommaverschiebung vermerkt man im Exponenten Eine solche Zahl heißt normalisiert 42

32-Bit-Fließkommazahlen nach IEEE 754 Rechner verwenden Darstellung nach IEEE 754 IEEE 7534 verwendet Platzspartrick Mantisse beginnt immer mit einer 1 (außer bei der Zahl 0) Durch Weglassen dieser Ziffer gewinnt man ein Bit Format einer 32-Bit IEEE 754-Fließkommazahl V Exponent (8 Bit) Mantisse (23 Bit, Nachkommateil) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Vorzeichen (1-Bit) 43

32-Bit-Fließkommazahlen nach IEEE 754 Wert des Exponenten e effektiv definiert als e effektiv = e 01111111 2 (= e - 127 10 ) Dadurch gilt e = 0000 0001 (1-127 = -126) e effektiv = -126 e = 0111 1111 (127 127 = 0) Komma nicht verschoben e = 1111 1110 (254 127 = 127) e effektiv = +127 V Exponent e (8 Bit) Mantisse m (23 Bit, Nachkommateil) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 44

32-Bit-Fließkommazahlen nach IEEE 754 Binärer Wert g einer Fließkommazahl (für e 0 und m 0) g = ( 1) v (1, m) 10 e 01111111 Problem: Darstellung der 0 (1,m x immer ungleich 0) Daher Sonderfälle e=0 und m 0 Zahl ist denomalisiert (0,M) e=0 und m=0 Darstellung der Zahl 0 e=1111 1111 und m 0 NaN (Not a Number) e=1111 1111 und m=0 Unendlich (Infinity, je nach Vorzeichen +/-) V Exponent e (8 Bit) Mantisse m (23 Bit, Nachkommateil) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 45

Umrechnung IEEE 754 Dezimalzahl Mantisse und Exponent in Dezimalzahlen umrechnen Damit folgende Formel benutzen g dezimal M v 23 edezimal = ( 1) (1,0 + dezimal / 2 ) 2 127 Beispiel: 0100 0000 0010 0000 0000 0000 0000 0000 v=0 0 10 e=1000 0000 2 7 10128 10 m= 010 0000 0000 0000 0000 0000 2 21 102097152 10 0 21 23 128 127 = ( 1) (1,0 + 2 / 2 ) 2 g dezimal = 1 (1 + 2 = 1,25 * 2 = 2,5 2 ) 2 1 46

Dezimalzahl IEEE 754 (am Bsp. für 14,1) 1. Dezimalzahl in Festkommabinärzahl umrechnen (mit 23 Binärstellen hinter erster 1) 1110, 0001 1001 1001 1001 1001 2. Verschiebe Komma um n Stellen nach, sodass Zahl die Form 1, bekommt 1,110 0001 1001 1001 1001 1001 n=3 3. Schreibe das Vorzeichenbit (1 falls negativ, 0 sonst) v=0 4. Rechne e=n+127 und schreibe binäre Darstellung von e 3+127=130 e= 1000 0010 5. Schreibe m (Bitfolge hinter dem Komma aus Schritt 2) m=110 0001 1001 1001 1001 1001 47

Dezimalzahl IEEE 754 (am Bsp. für 14,1) Zwischenergebnis v=0 e= 1000 0010 m=110 0001 1001 1001 1001 1001 Darstellung nach IEEE 754 Ergebnis 0 100 0001 0110 0001 1001 1001 1001 1001 Wirklichkeit 0 100 0001 0110 0001 1001 1001 1001 1010 ( komplizierte Rundungsregeln, ignorieren wir) 48

Rechnen mit Fließkommazahlen 1. Exponenten angleichen Zahl mit kleinerem Exponenten wird denormalisiert Grund: Kein Spezialfall für mehr als eine Stelle vor dem Komma! 2. Mantissen addieren, subtrahieren, multiplizieren oder dividieren 3. Ergebnis normalisieren 4. Fertig! 49

Rechnen mit Fließkommazahlen (Beispiel) 1. 12,75 + 53,5 2. 12,75 1100,11 e 1 = 3 + 127 = 130 10000010 m 1 = 10011 000000000000000000 53,5 110101,1 e 2 = 5 + 127 = 132 10000100 m 2 = 101011 00000000000000000 3. e 1 < e 2 e 1 anpassen! 0,01100110000000000000000 +1,10101100000000000000000 10,00010010000000000000000 66,25 0100 0010 1000 0100 1000 000000000000 1,000010010000000000000000 e 3 = 133! 50

Fließkommazahlen: Vor- und Nachteile Vorteile Fühlen sich für Programmierer wie reelle Zahlen an Großer Wertebereich, inkl. Werten für 0, +inf und inf Nachteile Sind nur endlich genau! Zahlen, die im Dezimalsystem exakt dargestellt werden können, müssen im Binärsystem u.u. gerundet werden. Durch diese Ungenauigkeit kommt es schon bei einfachen Rechnungen zu Rundungsfehlern Beispiele: siehe nächste Folie 51

Fließkommazahlen: Rundungsfehler 1234.567 3.333333 = 4115.223 1.234567 3.333333 = 4.115223 4115.223 + 4.115223 = 4119.338 aber: 1234.567 + 1.234567 = 1235.802 1235.802 3.333333 = 4119.340 Distributivgesetz verletzt: a * x + b * x!= (a+b) * x Konsequenz Für exakte Berechnungen (z.b. im Bankwesen) sind Fließkommazahlen ungeeignet Double-Precision (64 Bit IEEE 754): 1 Vorzeichenbit, 11 Bit Exponent, 52 Bit Mantisse 52

Zusammenfassung Zahlensysteme mit verschiedenen Basen Umwandlung zwischen Zahlensystemen (2er, 10er, 16er) Rechnen mit diesen Darstellungen Binäre Zahlendarstellung im Computer Ganze Zahlen (mit/ohne Vorzeichen) 1er- und 2er-Komplement Fließkommadarstellung Grenzen (Wertebereich, Genauigkeit)? Bitmuster im Speicher enthält keine Information über Art der Interpretation Als Programmierer muss man dies wissen bzw. beim Programmieren definieren Beginnt an Adresse 3 z.b. eine 8 Bit Zahl oder 32 Bit? Ganzzahl, 1er- / 2er-Komplement oder IEEE 754 Kodierung? 53