Einführung in die Systemprogrammierung

Ähnliche Dokumente
Einführung in die Systemprogrammierung 03

Einführung in die Systemprogrammierung 03

Einführung in die Systemprogrammierung

Einführung in die Systemprogrammierung 09

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

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

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

Der Zahlenformatstandard IEEE 754

N Bit Darstellung von Gleitkommazahlen

Wertebereiche, Overflow und Underflow

5 Zahlenformate und deren Grenzen

HaDePrak WS 05/ Versuch

1.5 Einführung und Zahlensysteme/Darstellung gebrochener Zahlen

Übung Praktische Informatik II

Binäre Division. Binäre Division (Forts.)

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

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

Das Verfahren in Hardware

Einführung in die Programmiertechnik

Vorlesung Programmieren

4. Zahlendarstellungen

Computergrundlagen Zahlensysteme

6.2 Kodierung von Zahlen

Grundlagen der Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS

4. Zahlendarstellungen

2.1.2 Gleitkommazahlen

Einführung in die Informatik I

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

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

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation

Motivation 31. Mai 2005

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

Rechnerstrukturen. Michael Engel und Peter Marwedel WS 2013/14. TU Dortmund, Fakultät für Informatik

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

Numerik. Festpunkt-Darstellung

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

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

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

Rechnerstrukturen WS 2012/13

2 Darstellung von Zahlen und Zeichen

Zahlen in Binärdarstellung

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

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

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

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Fest- und Gleitkommasysteme

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

DuE-Tutorien 16 und 17

Binäre Gleitkommazahlen

2 Repräsentation von elementaren Daten

RO-Tutorien 3 / 6 / 12

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

Multiplizierer. Beispiel komplexer arithmetischer Schaltung. Langsamer als Addition, braucht mehr Platz. Sequentielle Multiplikation

Computerarithmetik (6a)

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Implementierung von Gleitkomma-Operationen

Zum Nachdenken. Wenn die Zahl (123) hat, was könnte dann (123,45) 10

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21

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

, 2014W Übungstermin: Fr.,

Gleitkommaarithmetik. Erhöhen der Genauigkeit. Grundlagen der Rechnerarchitektur Logik und Arithmetik 124

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

Grundlagen der Programmierung

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

Lösung 2. Übungsblatt

o feste Anzahl Vorkommastellen (z.b. 7) o feste Anzahl Nachkommastellen (z.b. 3) o Nachteil 1: o feste Anzahl signifikanter Stellen (10)

6. Zahlendarstellungen und Rechnerarithmetik

Computerarithmetik ( )

Rechnerstrukturen WS 2012/13

Mathematische Werkzeuge für Computergrafik 2016/17. Gleitkommzahlen

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

1. Grundlegende Konzepte der Informatik

Rechnernetze und Organisation

, 2015S Übungstermin: Mi.,

Grundlagen der Technischen Informatik. 4. Übung

3 Rechnen und Schaltnetze

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

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

Rechnen in B. Ralf Dorn. 3. September Heinrich-Hertz-Gymnasium. R. Dorn (H 2 O) Informatik LK 3. September / 6

o feste Anzahl Vorkommastellen (z.b. 7) o feste Anzahl Nachkommastellen (z.b. 3) o Nachteil 1: o feste Anzahl signifikanter Stellen (10)

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

Kapitel 5: Daten und Operationen

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

Rechnergrundlagen SS Vorlesung

1. TÜ-Zusammenfassung zum Modul Computersysteme

Richtig Rechnen. // Program: fahrenheit.c // Convert temperatures from Celsius to Fahrenheit.

1. Tutorium Digitaltechnik und Entwurfsverfahren

, 2017S Übungstermin: Di.,

Das Rechnermodell - Funktion

Grundzüge der Informatik Tutorium Gruppe 6

Transkript:

Einführung in die Systemprogrammierung Repräsentierung Rationaler Zahlen Prof. Dr. Christoph Reichenbach Fachbereich 12 / Institut für Informatik 19. Juni 2015

Rationale Zahlen Wie können wir Rationale Zahlen im Rechner repräsentieren? Festkommazahlen Brüche Fließkommazahlen

Festkommazahlen Idee: wir speichern die Zahl als Zweierkomplementzahl mit multiplikativem Bias Beispiel: Zwei Dezimal-Nachkommastellen: repr(n) = n 100 n repr(n) 0 0 1 100 4,99 499 Addition/Subtraktion: Wie bei Zweierkomplement Multiplikation: repr(repr(x) repr(y)) = x y 100

Division von Festkommazahlen Vorsicht bei der Division! ( ) repr(x) repr = x repr(y) y 100 0,4 : 0,3 Erst Division: 100 * (40 / 30) = 100 * 1 = 100 = repr(1) Erst Multiplikation: (100 * 40) / 30 = 4000 / 30 = 133 = repr(1,33) Integer-Division schneidet Nachkommastellen ab! Schneller: Bit-Schiebeoperationen statt langsamer Division, aber nur für Binärnachkommastellen

Festkommazahlen: Eigenschaften Vorteile: Festkommazahlen sind exakt bei Addition, Subtraktion (modulo Überlauf) Festkommazahlen sind effizient bei Addition, Subtraktion Mit existierenden Mitteln einfach zu implementieren Nachteile: Festkommazahlen sind ungenau bei Multiplikation, Division Festkommazahlen arbeiten immer mit festem Multiplikator (100, in unserem Beispiel) Fester Multiplikator ist für naturwissenschaftliche Zwecke nicht flexibel genug!

Fließkommazahlen: Die Idee Naturwissenschaftler: Wir brauchen Zahlen mit sehr unterschiedlichen Größenordnungen! flexibler multiplikativer Bias! Repräsentierungsbeispiel: 4,2 10 23 als 420, 23 1,15 10 8 als 115, 8 Wir speichern den Exponenten der Zahl zusammen mit einer Annäherung der signifikanten Ziffern (Mantisse) Im Rechner sind Zweierexponenten effizienter als Zehnerexponenten

Fließkommarepräsentierung...... Vorzeichen Exponent Mantisse Zahl getrennt in Vorzeichenbit, Exponent, Mantisse Exponent mit Bias gespeichert Falls die Zahl 0, muß Binärmantisse immer mit 1 beginnen, daher ist dieses Bit implizit. Beispiel: 8 Bits Exponent, Bias 127, Mantisse 23 Bits

Fließkommarepräsentierung: Beispiel 0 1000 1000 1111 0100 0000 0000 0000 000 Vorzeichen Exponent Mantisse Beispiel: 8 Bits Exponent, Bias=127, Mantisse 23 Bits Vorzeichen v = 0 Exponent e = 10001000 2 127 = 9 Mantisse m = 1,11110100000000000000000 2 = 1.953125 10 1 v 2 e m = 1 512 1.953125 = 1000

IEEE 754: Fließkommazahlen Standardisierte Repräsentierung: IEEE-754 Format Exponent Bias (Exponent) Mantisse binary32 8 Bits 127 23 Bits binary64 11 Bits 1023 52 Bits Unterstützt von handelsüblicher Hardware, z.b. dem MIPS-Coprozessor #1 binary32 auch als Fließkommazahl mit einfacher Präzision bezeichnet (C/C++/Java: float) binary64 auch als Fließkommazahl mit doppelter Präzision bezeichnet (C/C++/Java: double)

IEEE 754: Besondere Zahlen Bestimmte Bitmuster haben spezielle Bedeutungen. Hier für binary32: IEEE 754-Zahlen nehmen besondere Bedeutungen an, wenn der Exponent nur aus 0- oder 1-Bits besteht. Exponent = 0...0: 0x00000000 repräsentiert 0 0x80000000 repräsentiert 0 Allgemein: 1 v 2 126 m (ohne 1,-Erweiterung) Exponent = 1...1: 0x7f800000 repräsentiert 0xff800000 repräsentiert Andere Werte für NaN, not a number: Bei 0 0 Bei 1...

Fließkomma-Multiplikation...... xor + 1............ + Verschiebung (δ) Normalisierung Hier nur für normale Fließkommazahlen beschrieben Vorzeichen, Exponent: multiplizieren Mantisse: ( 1 ): mit fühender 1, erweitern, multiplizieren Normalisieren: um δ verschieben, bis genau eine 1, vor dem Komma δ auf Exponent addieren Auf Überlauf prüfen

Fließkomma-Addition 0 e 0 m 0 + 0 e 1 m 1 Annahme: positiv, e 0 > e 1. Andere Fälle analog. m 0 + 0...01 m 1 e 0 e 1 0 e 0 m c Exponent ist der größere (e 0 ) Hintere Bits von m 1 werden abgeschnitten, Resultat der Mantissenaddition nach m c Überlauf um 1 Bit möglich

Risiken bei Fließkommazahlenarithmetik Zahlenrepräsentierung notwendigerweise ungenau Addition/Subtraktion von Zahlen verschiedener Größenordnung verwirft Nachkommastellen Wenn Differenz zwischen Exponenten größer ist als Mantisse, ist Addition/Subtraktion komplett wirkungslos! Vorsicht beim Aggregieren von Zahlen!

Fließkommaregister auf MIPS binary32: $f0 $f1... $f30 $f31 binary64: $f0... $f30 MIPS: Fließkommazahlen in Coprozessor #1 32 binary32-fließkommaregister $f0 bis $f31 Je zwei konsekutive Register $fx,$fx+1 können als binary64-register zusammengeschaltet werden Erstes Register muß geradezahlig sein $f0, $f2,... binary64-register hat gleichen Namen wie erstes Register

Fließkommaarithmetik auf MIPS Befehl Bedeutung Register add.s $z, $x, $y binary32 $z := $x + $y add.d $z, $x, $y binary64 sub.s $z, $x, $y binary32 $z := $x $y sub.d $z, $x, $y binary64 mul.s $z, $x, $y binary32 $z := $x $y mul.d $z, $x, $y binary64 div.s $z, $x, $y $z := $x binary32 div.d $z, $x, $y $y binary64 sqrt.s $z, $x $z := binary32 $x sqrt.d $z, $x binary64 Alle Grundrechenoperationen und die Quadratwurzel als binary32 (.s) oder binary64 (.d)

MIPS-Fließkommas: Kopieren, Konvertieren Konvertierungen: cvt.s.d $z, $x: Konvertiere binary64 nach binary32 cvt.s.w $z, $x: Konvertiere Zweierkomplementzahl nach binary32 cvt.d.w,s: Konvertiere nach binary64 cvt.w.s,d: Konvertiere nach Zweierkomplement Kopieren zwischen Hauptprozessor und Koprozessor #1: mtc1 $z, $x: CPU Koprozessor z.b.: mtc1 $f0, $v0 mfc1 $z, $x: Koprozessor CPU z.b.: mfc1 $v0, $f0 Weitere Operationen: Vergleich, Runden,...

Zusammenfassung: Fließkommazahlen v e m Vorzeichen Exponent Mantisse Fließkommazahl besteht aus Vorzeichen v, Exponent e, Mantisse m Wert: meist 1 v 2 e 1,m Sonderwerte wenn alle Bits im Exponenten 0 oder 1 sind Ermöglichen effizientes Arbeiten mit Zahlen in unterschiedlichen Größenordnungen Vorsicht: Addition/Subtraktion impräzise bei ungleichen Exponenten

Zusammenfassung: Rationale Zahlen Repräsentierung per Fixkommazahlen: Fester multiplikativer Bias Einfach zu implementieren (keine Zusatzhardware nötig) Verwendet Standardregister Repräsentierung per Bruchzahlen (per Softwarebibliothek) Repräsentierung per Fließkommazahlen Multiplikativer Bias je nach Zahl unterschiedlich Benötigt Zusatzhardware, aber auf fast allen modernen Prozessoren verfügbar Verwendet meist Zusatzregister