Inhalt. 8. Rechnerarithmetik 1

Ähnliche Dokumente
Grundlagen der Informatik

Technische Informatik - Eine Einführung

Binärdarstellung von Fliesskommazahlen

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

2 Darstellung von Zahlen und Zeichen

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

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Binäre Gleitkommazahlen

Vertiefungsstoff zum Thema Darstellung von Zahlen

2. Negative Dualzahlen darstellen

Einführung in die Informatik I

Zahlendarstellungen und Rechnerarithmetik*

Binär- und Hexadezimal-Zahl Arithmetik.

Primzahlen und RSA-Verschlüsselung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lösungen: zu 1. a.) b.) c.)

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Computerarithmetik ( )

Zeichen bei Zahlen entschlüsseln

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Zahlensysteme: Oktal- und Hexadezimalsystem

Grundlagen der Informatik (BSc) Übung Nr. 5

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

3 Rechnen und Schaltnetze

Numerische Datentypen. Simon Weidmann

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

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

Daten verarbeiten. Binärzahlen

Zahlensysteme Seite -1- Zahlensysteme

, WS2012 Übungsgruppen: Mo.,

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 09/10

1 Mathematische Grundlagen

Englische Division. ... und allgemeine Hinweise

Grundlagen der Informatik I Informationsdarstellung

Grundlagen der Informatik 2 Grundlagen der Digitaltechnik. 1. Zahlensysteme

Information in einem Computer ist ein

Einführung in die Programmierung

Übungen zu Informatik 1

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Im Original veränderbare Word-Dateien

Theoretische Informatik SS 04 Übung 1

Sowohl die Malstreifen als auch die Neperschen Streifen können auch in anderen Stellenwertsystemen verwendet werden.

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

Mikrocomputertechnik. Adressierungsarten

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

FH Jena Prüfungsaufgaben Prof. Giesecke FB ET/IT Binäre Rechenoperationen WS 11/12

Informationsblatt Induktionsbeweis

Wir basteln einen Jahreskalender mit MS Excel.

Java Einführung Operatoren Kapitel 2 und 3

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

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

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

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Eine Logikschaltung zur Addition zweier Zahlen

Daten, Informationen, Kodierung. Binärkodierung

7 Rechnen mit Polynomen

Grundstrukturen: Speicherorganisation und Zahlenmengen

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

Binär Codierte Dezimalzahlen (BCD-Code)

Das Rechnermodell - Funktion

Wer in der Grundschule ein wenig aufgepasst hat, sollte in der Lage sein schriftlich eine Zahl durch eine zweite zu teilen.

Grundlagen der Informatik Übungen 1.Termin

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

Übung 9 - Lösungsvorschlag

Konzepte der Informatik

Grundlagen der Theoretischen Informatik, SoSe 2008

Lineare Gleichungssysteme

C:\WINNT\System32 ist der Pfad der zur Datei calc.exe führt. Diese Datei enthält das Rechner - Programm. Klicke jetzt auf Abbrechen.

Programmierkurs Java

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Zahlensysteme. von Christian Bartl

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Mikro-Controller-Pass 1

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Weiterbildung und Zusatzausbildung der PHZ Luzern Interessantes und Spannendes aus der Welt der Mathematik September 2006, Dieter Ortner

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Algorithmen zur Integer-Multiplikation

Die Mikroprogrammebene eines Rechners

Berechnungen in Access Teil I

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Lösung 1. Übungsblatt

Facharbeit Informatik. Thema:

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Das Persönliche Budget in verständlicher Sprache

BSZ für Elektrotechnik Dresden. Zahlenformate. Dr.-Ing. Uwe Heiner Leichsenring

Plotten von Linien ( nach Jack Bresenham, 1962 )

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

Das Maschinenmodell Datenrepräsentation

a) Da die Zahlen im IEEE-32Bit-Format dargestellt werden sollen, ist der Bias = 127.

A.3. A.3 Spezielle Schaltnetze Prof. Dr. Rainer Manthey Informatik II 1

Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4. Kapitel 4: Schaltungen mit Delays Seite 1

Einführung in die Algebra

1. Übung - Einführung/Rechnerarchitektur

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Transkript:

8. Rechnerarithmetik Inhalt 8. Rechnerarithmetik... 8. Polyadische Zahlensysteme... 8.2 Zahlenkonvertierung und Konvertierungsfehler... 3 8.3 Binäre Verschlüsselung von Dezimalzahlen... 6 8.4 Zahldarstellung im Rechner... 6 8.5 Gleitkommazahlen... 8 8.5. Darstellung von Gleitkommazahlen... 8 8.5.2 Gleitkommaarithmetik... 9 8.5.3 Weitere Numerische Effekte... 0 8.5.4 Nega-binäre Arithmetik 9. Rechnerstrukturen... 3 9. Von-Neumann-Rechner... 3 9.2. Pascal-Simulation einer von-neumann-maschine... 9 9.3 Maschinensprachebene... 23 9.3. Maschinentypen... 23 9.3.2 Befehlsformate... 25 9.3.3 Operandenzugriffe, Adressierungstechniken... 26 9.3.4 Befehlstypen... 28 9.3.5 Ein/Ausgabe und Unterbrechungen... 29 9.3.6 Assemblersprache... 30 9.4 Mikroprogrammierung... 3 9.5 CISC- und RISC-Prozessoren... 32 9.6 Speicher und Speicherhierarchie... 33 9.7 Peripheriegeräte... 34 9.7. Standardperipheriegeräte... 34 9.7.2 Speicherperipheriegeräte... 35 9.7.3 Sonderperipheriegeräte... 36 9.8 Parallelarchitekturen... 36 9.8. Parallelarchitekturen nahe am v.-neumann-rechner... 36 9.8.2 Parallelarchitekturen in stärkerer Abkehr vom v.-neumann-rechner... 38 9.8.2. Mehrprozessorrechner mit privaten Speichern... 38 9.8.2.2 Assoziativrechner... 38 9.8.2.3 Connection Machine... 39 9.8.2.4 Zellenrechner... 39 9.8.2.5 Datenflußrechner... 39 0. Betriebssysteme... 40 0. Schichtenarchitekur von Betriebssystemen... 40 0.2 Bedienschnittstelle/Benutzerschnittstelle... 42 0.3 UNIX als Fallbeispiel... 43 0.3. Zur Struktur von UNIX... 44 0.3.2 Das hierarchische File-System... 44 0.3.3 Die UNIX-Shell... 47 0.4 Aufgaben des Betriebssystems... 49

2 Informatik II 0.4. Speicherverwaltung am Beispiel Paging... 50 0.4.2 Prozesse... 53 0.4.3 Prozeß-Synchronisation... 54 0.4.3. Semaphore... 55 0.4.3.2 Wechselseitiger Ausschluß... 56 0.4.3.3 Kooperierende Parallele Prozesse... 57 0.4.4 ProzessorverwaltungScheduling und Leistungsaspekte... 58. Petri-Netze... 6.. Definition der Stellen-/Transitionsnetze... 62... Struktur von Petri-Netzen... 62..2. Verhalten von Petri-Netzen... 65..3 Beispiele aus dem Betriebssystem-Bereich... 69.2 Analyseziele und -techniken... 7.2. Beschränktheit... 7.2.2 Invarianz der Markenbelegung... 76.2.3 Reproduzierbarkeit... 77.2.4 Erreichbarkeit... 78.2.5 Lebendigkeit... 79 2. Verteilte Systeme und Rechnernetze... 83 2. Definition von Verteilten Systemen... 83 2.2 Zur Architektur Verteilter Systeme... 85 2.3 Das OSI-Referenzmodell... 86 2.4 Lokale Netze... 89 2.5 Globale Netze... 92 Literaturhinweise... 93 Vorbemerkung zur 0. Auflage Das Skript wurde bereits in nahezu identischer Form im Sommersemester 998 verwendet. Lediglich Abschnitt Nega-binäre Arithmetik ist neu, der Rest wurde nur redaktionell überarbeitet. Danken möchte ich meinen Kollegen Prof. Dr. Heiko Krumm und Dr. Falko Bause, die mir aus ihren Skripten Material zu "Rechnerstrukturen" bzw. zu "Petri-Netze" zur Verfügung gestellt haben. Claudio Moraga, Juni 2000

8. Rechnerarithmetik 3 8. Rechnerarithmetik 8. Binärzahlen 8.. p-adische Zahlensysteme Die natürlichen Zahlen und die Null werden normalerweise im Dezimalsystem geschrieben, d.h. eine Zahl n N 0 wird dargestellt als wobei z i {0,, 2, 3, 4, 5, 6, 7, 8, 9}. m i n = z i 0 i= 0 Beispiel: 998 steht bei Basis 0 für *0 3 + 9*0 2 + 9*0 + 8*0 0 = 000 + 900 + 90 + 8 = 998 Nun ist die Wahl der Konstanten 0 im mathematischen Sinne willkürlich. Tatsächlich hat es in der Geschichte viele andere Darstellungen von Zahlen gegeben. Die Römer hatten keine Summendarstellung, die Babylonier benutzten ein 60-er- System, die Kelten ein 20-er-System. (Der Ausdruck quatre-vingt für achtzig in der heutigen französischen Sprache ist ein Rest aus dieser Zeit.) Darüber hinaus war auch das 2-er-System (Uhrzeit, Winkel) beliebt. Im Rechner wird fast ausschließlich die Basis 2 benutzt, d.h. die Zahl n N 0 wird durch dargestellt. m i n = bi 0 mit bi { 0, } i = 0 Beispiel: 0 steht bei Basis 2 für (0) 2 = (000) 2 + (00) 2 + (0) 2 = *2 3 + *2 2 + *2 + 0*2 0 = *8 + *4 + *2 + 0* = 4 Ebenfalls verwenden wir das Oktalsystem mit der Basis 8. Beispiel: m i n = ai 0 mit ai { 0234567,,,,,,, } i = 0 67 steht bei Basis 8 für

4 Informatik II (67) 8 = (600) 8 + (70) 8 + () 8 = 6*8 2 + 7*8 + *8 0 = 6*64 + 7*8 + * = 44 Schließlich wird das Hexadezimalsystem mit der Basis 6 verwendet. m i n= hi 6 mit hi { 023456789,,,,,,,,,, A, B, C, D, E, F} i = 0 Beispiel: EF3 steht bei Basis 6 für (EF3) 6 = (000) 6 + (E00) 6 + (F0) 6 + (3) 6 = () 6*6 3 + (E) 6*6 2 + (F) 6*6 + (3) 6*6 0 = *4096 + 4*256 + 5*6 + 3* = 7823 Allgemein kann man festhalten: Satz: Jede natürliche Zahl n besitzt zur Basis p 2 (p N) eine eindeutige, m-stellige p-adische Darstellung der Form: m i n = α p mit 0 α < p, m log n i = 0 Umwandlung von Dezimalzahlen in p-adische Zahlen i Satz: (aus der Zahlentheorie) m N, eindeutig bestimmte Zahlen q, r N mit m = q*n+r, 0 r < n (q: Quotient, r: Rest) Definition: Ist m = q*n+r, dann wird q = m n (wobei die ganzzahlige Division bezeichnet) und r = m mod n. Beispiel: m = 29, n = 6 q = 29 6 = 4; r = 29 mod 6 = 5; 29 = 4*6+5 Nun sei a N derart, daß folgendes gilt: k i a = α p mit 0 α < p, i= 0 dann ist a k a k-... a a 0 die p-adische Darstellung von a. Es gilt: i k k k i i 0 i a = αi p = αi p + a0 p = p αi p + a i= 0 i= Nach dem obigen Satz folgt: i i i= p 0 Analog gilt: k i= a = a mod p i α p = a p i 0

8. Rechnerarithmetik 5 k i= i i 2 α p = p α p + a i k i= 2 i Also: i 2 mit a = ( a p) mod p und α p = ( a p) p a = amod p 0 a = ( a p) mod p k i= 2 a = (( a p) p) mod p 2 ak = ( ( a p) p) ) p) mod p k mal i Beispiel: 29 0 = (? ) 2 29 2 = 4, a 0 = 4 2 = 7, a = 0 7 2 = 3, a 2 = 3 2 =, a 3 = 2 = 0, a 4 = 29 0 = ( 0 ) 2 Bemerkung: Sind die Operationen und mod in einem q-adischen Zahlensystem definiert, dann gilt das obige Verfahren für die Umwandlung von q-adischen Zahlen in p- adische Zahlen. Für manche Zahlendarstellung ist die Umwandlung besonders einfach. Speziell die Umwandlung p-adischer in pk-adische Zahlen (und umgekehrt) kann durch Zusammenfassen von benachbarten Ziffern erfolgen. Beispiel: 4 7 2 3 8 Oktalzahl 0 0 0 0 0 2 Binärzahl 9 D 3 6 Hexadezimalzahl 7 6 3 6 5 9 Nonalzahl 0 2 2 0 0 2 0 2 3 Ternärzahl

6 Informatik II Übung: (996) 0 = ( ) 6 = ( ) 2 (ACDC) 6 = ( ) 0 (Übung für Musik-Kenner!) Lösung: 996 6 = 24, a 0 = 2 = C 6 = (00) 2 24 6 = 7, a = 2 = C 6 = (00) 2 7 6 = 0, a 2 = 7 = 7 6 = (0) 2 (996) 0 = (7CC) 6 = (0 00 00) 2 (ACDC) 6 = A 6 6 3 + C 6 6 2 + D 6 6 + C 6 6 0 = 0 4096 + 2 256 + 3 6 + 2 = (44252) 0 Für die folgenden Abschnitte müssen einige Vereinbarungen getroffen werden: Durch einen kleinen Buchstaben wird der positive oder negative Wert einer darzustellenden Zahl gekennzeichnet, z.b. (klein) a. Zur Darstellung wird eine Folge von m Bits benutzt, symbolisch abgekürzt durch A(m) (sprich: A mit m Stellen). Um die Darstellung aus dem Wert berechnen zu können (und umgekehrt), wird vereinbart, daß A(m) gleichzeitig den Wert der entsprechenden m-stelligen Dualzahl (Basis = 2) besitzt. Also: m i a A(m) := a m- a m-2... a a 0 a i 2 i= 0 mit a i B A(m) verkörpert also einen bestimmten dualen Wert, mit dem gerechnet werden kann, und es wird außerdem angedeutet, daß dieser Wert durch eine Folge von m Bits repräsentiert wird. Durch diese Vereinbarung kann eine Abbildung zwischen Wert und Darstellung durch eine Abbildung zwischen Wert und dualem Wert ersetzt werden. Wenn es aus dem Zusammenhang hervorgeht, daß die Dualzahlen immer genau m Stellen umfassen, dann wird statt A(m) einfach A geschrieben. 8..2 Multiplikation von Binärzahlen Die Multiplikation binärer Zahlen läßt sich mit dem Schule-Algorithmus genau wie für Dezimalzahlen durchführen. Beispiel: 25 27 = 675; 25 := 00; 27 := 0 00 0 00 00 0 00 00 00000

8. Rechnerarithmetik 7 = 2 9 + 2 7 + 2 5 + 2 + 2 0 = 52 + 28 + 32 + 2 + = 675 8.2 Vorzeichen-Betrag-Darstellung 8.2. Vorzeichenzahlen Eine Vorzeichenzahl wird durch eine Dualzahl A(m) dargestellt. Das am weitesten links stehende Bit a m-, hier a v genannt, repräsentiert das Vorzeichen des darzustellenden Wertes a, und die restlichen m- Bits bzw. A(m-) entsprechen dem Betrag von a. Die Vorzeichenzahl läßt sich also nach folgender Vorschrift ermitteln: 0 für a 0 Am ( ) = a, av = für a < 0 Bei dieser Vorschrift ist die Möglichkeit ausgeschlossen, den Wert "minus Null" durch "00...0" darzustellen. Aus der Vorzeichenzahl A(m) läßt sich leicht der Wert a bestimmen: a = ( 2a ) A( m ) V Die Vorzeichen-Betrag-Darstellung ist eine sehr einfache Darstellungsform für positive und negative Ganzzahlen. Diese Darstellung ist zwar für die Multiplikation und Division gut geeignet, denn Vorzeichen und Betrag werden (nebenläufig) getrennt behandelt. Für die Addition und Subtraktion sind dagegen aufwendige Fallunterscheidungen erforderlich. Da die Multiplikation und Division meist auf die Addition zurückgeführt werden, verwendet man für diese grundlegenden Operationen andere geeignetere Darstellungsformen. 8.2.2 Addition von Vorzeichenzahlen Die Summe s = x+y wird mit Hilfe der Rückabbildung x = (-2x m- ) X(m-) dargestellt: s = x+y = ( - 2x m- )X(m-) + ( - 2y m- )Y(m-) Je nach Größe und Vorzeichen von x und y werden zur Darstellung der Summe m bzw. m+ Stellen (einschließlich Vorzeichenbit) benötigt: s = ( - 2s m- )S(m-) bzw. s = ( - 2s m )S(m) Soll das Ergebnis (m+)-stellig werden, so bedeutet dies eine Bereichsüberschreitung bezüglich des Darstellungsbereichs der Summanden. Da s m-, s m Œ { 0, } sind, gilt: (- 2s m- ) = /(- 2s m- ) und (- 2s m ) = /(- 2s m ).

8 Informatik II Daraus folgt: s = S(m-)/(- 2s m- ) bzw. s = S(m)/(- 2s m ) und: S(m-) = (- 2s m- ) [(-2x m- ) x + (-2y m- ) y ] bzw. S(m) = (- 2s m ) [(-2x m- ) x + (-2y m- ) y ] mit x = X(m-) und y = Y(m-) Aus den Gleichungen lassen sich drei verschiedenen Fälle ableiten, wenn s V (s V ist s m- in S(m-) bzw. s m in S(m)) in Abhängigkeit von x m-, x, y m- und y bekannt ist. Man kann sich leicht überlegen, daß das Ergebnis negativ wird, wenn: i) x und y beide negativ sind ii) x ist positive, y ist negative und x < y iii) x ist negative, y ist positive und x > y Die zwei Booleschen Variablen G und H seien folgendermaßen definiert: G := falls ( x y ) dann sonst 0 H := falls ( x y ) dann sonst 0 Dann gilt die folgende Boolesche Gleichung (α) : s V = x m- y m- + x m- G H + y m (-G) (Man merke, daß G H := ( x > y ) und (-G) := G := ( y > x ).) In Abhängigkeit von G und den Vorzeichenbits der Summanden berechnet sich die Summe nach Auswertung der obigen Gleichungen zu (β): x+ y für xm- = ym Sm ( ) = x y für xm- ym und G = y x für x y und G = 0 m- m Eine Bereichsüberschreitung (Überlauf, engl. overflow) wird durch einen Überlauf zum Vorzeichenbit der Summe angezeigt. Aus der Gleichung (α) und (β) kann man leicht sehen, wie ungeeignet für die Realisierung eines Rechenwerkes diese Zahlendarstellung ist. Beispiel: 4 + (-6) =? In der Booleschen Gleichung (α) bezeichnet + die Disjunktion (bzw. Oder-Operation). Die Operation ist assoziativ und kommutativ. Es gilt: 0 + 0 = 0; 0 + = + 0 = ; + =

8. Rechnerarithmetik 9 x := 4 = (000) VZ x m- = x 3 = 0 y := -6 = (0) VZ y m- = y 3 = x < y G = 0 x y H = x m- y m- (α) s V = 0 + 0 0 + (-0) = 0 + 0 + = (β) S(3) = y - x = 6-4 = 2 = (00) 4 + (-6) = (000) VZ + (0) VZ = (00) VZ = - 2 8.3 Zwei-Komplement Darstellung 8.3. 2K-Zahlen Die 2K-Darstellung ist die am häufigsten verwendete Darstellung für positive und negative Zahlen. Der duale Wert der 2K-Zahl A(m) stimmt mit dem darzustellenden Wert a überein, wenn a positiv ist. Ist a negativ, dann wird von der Konstante 2 m der Betrag von a abgezogen, damit eine positive Zahl A(m) entsteht. Man kann dann eine Bijektion Ψ von a auf A(m) definieren: [ 2 m 2 m ] [ 0 2 m ] Ψ:,,, a u A( m) Die Vorschrift zur Bildung des dualen Wertes A(m) lautet: a für a 0 m Am ( ) = amod 2 = m 2 a für a < 0 Für die Behandlung von Algorithmen spielt die Rückabbildung Ψ - eine wichtige Rolle: Am ( ) für a m m = 0 a = A( m) a = m- 2 m Am ( ) 2 für a = m Beispiel: a = 3 A(m) = A(3) = 0 = a 2 a a 0 a = A(m) - a m- 2 m = A(3) - a 2 2 3 = A(3) a = -3 A(m) = A(3) = 2 3 - a = 8-3 = 5 = 0 a = A(m) - a m- 2 m = A(3) - a 2 2 3 = 5-8 = -3 Wie bei der Vorzeichen-Betrag-Darstellung ist an dem höchstwertigen Bit a m- zu erkennen, ob der dargestellte Wert a positiv oder negativ ist. Eine unangenehme Eigenschaft von 2K-Zahlen ist, daß der Definitionsbereich unsymmetrisch zur Null liegt. Es läßt sich zwar die Zahl a = -2 m- als 2K-Zahl darstellen, nicht aber die Zahl a = +2 m-. Beispiel: Darstellung des Zahlenbereichs als Restklassenring modulo 2

0 Informatik II A(m).. \ - 00..0 0 / 00.. a - 2 m- + 2 m- - 0..0 / - 2 m- \ 0..0 0.. Jetzt soll überlegt werden, wie die 2K-Zahl A(m) verändert werden muß, damit sie anstatt des Wertes a den Wert -a darstellt. Die 2K-Zahl, die den Wert -a darstellt, heiße A * (m). Ist a positiv, dann ergibt sich A(m) = a und A * (m) = 2 m - a und daraus folgt: A * (m) = 2 m - A(m) (m-stelliges Ergebnis) Diese Differenz nennt man das Komplement von A(m) gegen 2 m. Das heißt, 2K- Zahlen sollten korrekter 2 m K-Zahlen heißen! (Ist a negativ, ergibt sich die gleiche Beziehung.) Sei A'( m) = a' m-a' m 2... a' a' 0 mit a' i= ai, ai { 0, }. Es gilt dann: m- i m Am ( ) + A'( m) = ( ai + a' i) 2 = 2 =... i=0 m m Am ( ) = 2 A'( m) * m m A ( m) = 2 ( 2 A'( m)) = A'( m) + A * ( m) = A'( m) + Diese Gleichung stellt einen einfachen Vorzeichen-Umwandlungsalgorithmus dar: "Bitweise komplementieren und addieren". Die 2K-Zahl kann auch nach einem einfachen Verfahren seriell gegen 2 m komplementiert werden, indem man von der niedrigsten Stelle ausgeht und nach links fortschreitet: alle rechts stehenden Nullen und die erste bleiben stehen; alle Bits, die weiter links stehen werden negiert. Beispiel: x=20, X(6) = 0000 X * (6) = 2 6 - X(6): 0 0 0 0 0 0-0 0 0 0 0 0 0 0

8. Rechnerarithmetik X * (6) = X (6) + : 0 0 + 0 0 0 serielles Verfahren: 0 0 0 0 0 0 0 (Ist x = -2 m -, darf X(m) wegen der Zahlenbereichsüberschreitung nicht gegen 2 m komplementiert werden.) Beispiel: x= +0, X(3) = 000 X * (3) = 2 3 - X(6): 0 0 0-0 0 0 0 0 0 X * (3) = X (3) + : + 0 0 0 serielles Verfahren: 0 0 0 0 0 0 (Also: 0 = - 0!) 8.3.2 Addition im Zwei-Komplement Gegeben seien zwei Zahlen X(m) und Y(m) in der 2K-Darstellung, und gesucht wird die Summe, dargestellt ebenfalls als 2K-Zahl. Aus x = X(m) - x m- 2 m folgt, daß s = x + y = X(m) - x m- 2 m + Y(m) - y m- 2 m Je nach Größe und Wertebereich von x und y werden zur Darstellung der Summe m bzw. m+ Stellen benötigt. s = S(m) - s m- 2 m bzw. s = S(m+) - s m 2 m S(m) = X(m) + Y(m) + (s m- - x m- - y m- ) 2 m S(m+) = X(m) + Y(m) + (2. s m - x m- - y m- ) 2 m bzw. Aus diesen beiden Gleichungen lassen sich jetzt die verschiedenen Fälle entnehmen, in Abhängigkeit von x m-, y m-, s m- bzw. s m. Ein gewisser Nachteil dieser Gleichungen ist die Tatsache, daß s m- bzw. s m auf beiden Seiten der Gleichungen vorkommt. Andererseits kann man sich leicht überlegen, wie s m- und s m von Vorzeichen und Betrag der Werte x und y abhängen. Bevor man die verschiedenen Fälle formal ableitet, ist es nützlich, die 6 charakteristischen Fälle anhand von Beispielen kennenzulernen:

2 Informatik II a) +2 000 a2) +7 0 +2 000 +7 0 +4 0000 +4 00 b) - b2) -7 00 - -7 00-2 0-4 000 c) +2 000 c2) + 000 - -7 00 + 000-6 000 Analyse (m = 4) Fall x m- y m- s m s m- Summe a 0 0 (0) 0 S(m) = x + y a2 0 0 0 S(m+) = x + y, Überlauf b S(m) = x + y -2 m b2 0 S(m+) = x + y, Überlauf c 0 0 S(m) = x + y -2 m c2 0 (0) S(m) = x + y In den Fällen a2 und b2 findet eine Bereichsüberschreitung statt, da das Ergebnis nicht mehr mit m Stellen darstellbar ist. Die hinzukommende Stelle s m kann dann als Vorzeichenstelle interpretiert werden. Die Stelle s m wird auch als Übertrag (engl. carry) bezeichnet. Der Übertrag, der in den Fällen b und c auftritt, gehört nicht zur Darstellung des m-stelligen Ergebnisses und wird deshalb abgeschnitten (entspricht der Subtraktion durch 2 m ). Trotzdem können alle Fälle zusammengefaßt werden: (i) Die Summe S(m) = x + y bilden, wobei ein Übertrag in die Stelle s m unberücksichtigt bleibt. (ii) Feststellen, ob ein Überlauf (ÜL) auftritt. (iii) Wenn kein Überlauf aufgetreten ist (ÜL=0), dann die Summe durch m Bits darstellen. Bei Überlauf (ÜL=) gibt der Übertrag s m zusammen mit den restlichen m Bits das Ergebnis an. Aus den Beispielen und der Tabelle läßt sich ÜL folgendermaßen bestimmen: ÜL := falls (x m- = y m- ) und (s m s m- ) dann sonst 0 Wenn bei der Addition ein Überlauf aufgetreten ist, dann reichen die vorgesehenen m Stellen nicht mehr zur Darstellung aus. Man könnte den Überlauf vermeiden, indem der Wertebereich von x und y beschränkt wird bzw. die Summe zu m+ Stellen "normiert" wird. Um die Wertdarstellung einer Zahl in der 2K-Darstellung bei einer größeren Stelligkeit beizubehalten, müssen alle neu eingefügten Stellen den gleichen Wert wie die Vorzeichenstelle haben, z.b.:

8. Rechnerarithmetik 3-2 = 0 = 0 =... = 0 Im Falle einer positiven Zahl ist dies offensichtlich. Daß dies auch im Falle einer negativen Zahl korrekt ist, kann durch Induktion bewiesen werden. Ein Induktionsschritt sieht wie folgt aus: Für x < 0 gilt: x = X(m) - 2 m Behauptung: x = (2 m + X(m)) -2 m+ = X(m) -2 m+ + 2 m = X(m) + 2 m (-2+) = X(m) -2 m Dann gilt: Summe = S (m+) := s m s m-... s s 0 mit s m := falls (ÜL=0) dann s m- sonst s m ; 8.4 Eins-Komplement-Darstellung 8.4. K-Zahlen Die Einskomplement-Zahl (K-Zahl) unterscheidet sich von der 2K-Zahl dadurch, daß das Komplement gegen 2 m - gebildet wird. Die entsprechende Bijektion wird folgendermaßen definiert: [ ] [ ] Ψ: 2 m +, 2 m 0, 2 m \{ 2 m }, a A( m) Zwischen dem darzustellenden Wert a und dem Dualwert der K-Zahl gelten die folgenden Beziehungen: a für a 0 m Am ( ) = amod ( 2 ) = m 2 a für a < 0 Am ( ) für a m m = 0 a = A( m) am ( ) = 2 m Am ( ) 2 + für a = m Bsp.: a = 3 A(m) = A(3) = 0 = a 2 a a 0 a = A(m) - a m- (2 m -) = A(3) a = -3 A(m) = A(3) = 2³ - - -3 = 4 = 00 a = A(m) - a m- (2 m -) = A(3) - a 2 (2³ - ) = 4 - *7 = -3 Auch bei dieser Darstellung identifiziert das höchste Bit a m-, ob a sich im positiven bzw. negativen Wertebereich befindet. Wenn für A(m) auch der Wert 2 m- - zugelassen wäre, dann ließe sich a = 0 durch A(m) = 00...0 und durch A(m) =... darstellen. Die K-Zahl läßt sich besonders leicht komplementieren, da sich A(m) und A * (m) zu 2 m - ergänzen: A(m) + A * (m) = 2 m - =... = A(m) + A (m) A * (m) = A (m) Die Darstellung der negativen Zahl ergibt sich also durch Negation aller Dualziffern. Die K-Zahl kann gegenüber der 2K-Zahl leichter komplementiert werden, verhält

4 Informatik II sich aber bei der Addition wegen einer manchmal notwendigen Korrektur um Eins ungünstiger. Zusammenfassendes Beispiel: Wert a dezimal Vorz.-Betrag- Darst. A(3) 8.4.2 Addition im Eins-Komplement 2K-Zahl A(3) K-Zahl A(3) -4-00 - -3 0 00-2 0 0 0-0 0 0 000 000 000 00 00 00 2 00 00 00 3 0 0 0 Es soll die Summe von zwei K-Zahlen gebildet werden. Also: s = x + y = X(m) - x m- (2 m -) + Y(m) - y m- (2 m -) Zur Darstellung der Summe werden m Stellen benötigt, wenn keine Bereichsüberschreitung auftritt, und m+ Stellen, wenn sie auftritt. s = S(m) - s m- (2 m -) bzw. s = S(m+) - s m (2 m+ -) = S(m+) - 2s m (2 m -) - s m Daraus folgt: S(m) = X(m) + Y(m) +(s m- -x m- -y m- )(2 m -) S(m+) = X(m) + Y(m) +(s m (2 m+ -) - (x m- +y m- )(2 m -)) = X(m) +Y(m) + (2s m -x m- -y m- )(2 m -) +s m Beispiel: a) +2 000 a2) +7 0 +2 000 +7 0 +4 0000 +4 00 b) - 0 b2) -7 000-0 -7 000-3 00-5 0000 + 000 + 000-2 0-4 000 c) +2 000 c2) + 000-0 -7 000 0 0000-6 000 + 000 + 000

8. Rechnerarithmetik 5 Aus diesen Beispielen kann man entnehmen, daß man das richtige Ergebnis nur dann erhält, wenn in den Fällen b, b2 und c eine hinzuaddiert wird. Diese Eins- Korrektur (engl. end-around carry ) muß genau dann durchgeführt werden, wenn der Überlauf s m = geworden ist. Fall x m- y m- s m s m- Summe a 0 0 (0) 0 S(m) = x + y a2 0 0 0 S(m+) = x + y, Überlauf b S(m) = x+y+-2 m (m-stellig) b2 0 S(m+) = x + y +, Überlauf c 0 0 S(m) = x+y+-2 m (m-stellig) c2 0 (0) S(m) = x + y In der Addition in der K-D gilt ebenfalls ÜL = falls (x m- = y m- ) und (s m s m- ) dann sonst 0 Bemerkung: Bei der Summe in der K-Darstellung wird... auch als Darstellung für die Null zugelassen, wie in folgendem Beispiel (mit m = 4) dargestellt: +6 00-6 00 0 0 Da ÜL = 0 ist, gilt s = S(4). D.h. s = = 0 Vor die Wahl gestellt, ein Rechenwerk entweder für das Eins- oder für das Zwei- Komplement zu entwerfen, wird man sich in der Regel für das Zwei-Komplement entscheiden, weil dann keine negative Null stört und keine Eins-Korrektur notwendig ist. Allerdings darf nicht vergessen werden, daß die größte negative Zahl im Zwei-Komplement Schwierigkeiten machen kann. Außerdem gestaltet sich die Multiplikation, Division und Komplementbildung im Eins-Komplement einfacher. Für ein serielles Additionswerk, bei dem in jedem Schritt ein Summenbit und ein Übertragsbit berechnet wird, ist es ebenfalls günstiger, das Zwei-Komplement zu wählen, weil die Eins-Korrektur zu einem zweiten Durchlauf führen kann. 8.5 Binär-codierte Dezimalzahlen 8.5. BCD-Zahlen Viele Rechenanlagen rechnen intern mit Dualzahlen, weil die meisten Speicherelemente nur zwei Zustände besitzen. Außerdem lassen sich für Dualzahlen sehr einfache Rechenwerke mit logischen Bauelementen konstruieren. Als Mensch ist man dagegen so stark an die Dezimalzahlen gewöhnt, daß man mit keinem anderen Zahlensystem umgehen will. Deshalb wird für gewöhnlich verlangt, daß man in einen Rechner Dezimalzahlen eingeben kann und daß er die Ergebnisse in der gleichen Form ausgibt. Wenn der Rechner intern mit Dualzahlen rechnet, dann müssen am

6 Informatik II Anfang und Ende der Rechnung Konvertierungen vorgenommen werden. Abgesehen davon, daß für diese Umwandlung Schaltnetze oder Programme benötigt werden, entstehen bei der Konvertierung von gebrochenen Zahlen Konvertierungsfehler. So kann z.b. die Dezimalzahl 0, nicht als Dualzahl mit endlich vielen Ziffern dargestellt werden. Wenn intern mit Dualzahlen gerechnet wird, dann ergeben sich also Fehler, die nicht toleriert werden können. Deshalb können manche Rechner intern auch mit Dezimalzahlen rechnen. Auch die Taschenrechner arbeiten intern meist mit Dezimalzahlen. Wie werden die Dezimalzahlen intern im Rechner gespeichert? Eine einfache Lösung besteht darin, daß jede Dezimalziffer durch eine Folge von Bits codiert und in dieser Form abgespeichert wird. Dabei hat sich insbesondere die Codierung einer Dezimalzahl durch eine 4-stellige Dualzahl durchgesetzt. Man spricht von einer binär codierten Dezimalzahl (kurz BCD-Zahl). Beispiel: 999 0 000 00 00 00 BCD Bei der Addition von BCD-Zahlen ergeben sich 5-stellige Dualzahlen, die in BCD- Zahlen umgewandelt werden müssen. Der Zusammenhang zwischen einer 5-stelligen Dualzahl x = X(5) und der zugehörigen 5-stelligen BCD-Zahl X(5) ist in folgender Tabelle festgehalten: x x+6 Dual Dez. BCD Dual Dez 0 0000 0 0000 0000 6 0 000 0000 000 7 0 000 2 0000 000 8 0 00 3 0000 00 nicht 9 0 000 4 0000 000 0 0 00 5 0000 00 relevant 0 00 6 0000 00 2 0 0 7 0000 0 3 0 000 8 0000 000 4 0 00 9 0000 00 5 0 00 0 000 0000 0000 6 0 0 000 000 000 7 0 00 2 000 000 000 8 0 0 3 000 00 00 9 0 0 4 000 000 000 20 0 5 000 00 00 2 0000 6 000 00 00 22 000 7 000 0 0 23 000 8 000 000 000 24 00 9 000 00 00 25 Sei G x := falls (x 0) dann sonst 0; X(5) BCD = x + G x 6 bzw. X(5) BCD = (x+6) - (-G x ) 6 (Bemerkung: G x = x 4 +x 3 (x 2 +x ), (Boolesche Gleichung))

8. Rechnerarithmetik 7 Mit X(5) BCD = x + G x 6 ist gemeint, daß man die BCD-Darstellung der Zahl x erhält, indem man die Dualdarstellung von x + G x 6 beschreibt. 8.5.2 BCD-Binär-Umwandlung Vorüberlegung: 7 Rest 8 4 0 2 0 0 0 aber: 7 : 2 = (0 + (6 + ))/2 (0/2) + (6/2) mit Rest 5 + 3 ; Rest Dasselbe in BCD: 000 0 0000 0 D.h.: 8 + 3 ; Rest Das Rechtsschieben halbiert die Wertigkeit jedes Bits der BCD-Darstellung, ausgenommen des Bits, das über die Tetradengrenze hinweg geschoben wird. Hierbei sinkt der Wert von 0 nicht auf 5, sondern auf 8. Also: Im obigen Fall ist eine Korrektur um -3 erforderlich! Allgemeines Verfahren: (i) Eine BCD-Zahl als eine 4n-stellige Binärzahl betrachten. (ii) "Div. 2" wird durch Rechts-Schieben realisiert. Das "rechts ausgehende" Bit ist das (jeweilige) niedrigstwertige Bit der gewünschte Binärzahl. Ist von einer Bit- Tetrade eine in die rechts stehende nächste Tetrade gelangt, so muß 3 abgezogen werden. (iii) 4n-mal wiederholen bzw. solange der Dividend ungleich Null ist. Beispiel: 37:=00 000 0:= 000 s K = s K = s K 00 000 0 Rest 000 000 0 00 00 000 00 000 0000 00 00 0 0000 0000 00 0 00 00 00 00 00

8 Informatik II = s K = s K = s s s s 0000 0000 0000 0000 0000 0000 0000 0000 0000 00 000 000 0000 0000 0000 0000 0000 0000 00 00 00 00 00 00 00 000 000 000 0000 0 0 8.5.3 Addition von BCD-Zahlen Die Addition von BCD-Zahlen wird auf die Addition der einzelnen BCD-Ziffern gebildet. Es wird jeweils die Summe von zwei BCD-Ziffern X(4) und Y(4) gebildet, wobei zusätzlich der Übertrag c i- von der vorhergehenden Stelle berücksichtigt werden muß. Bei dieser Summenbildung kann ein Übertrag c i in die nächste Stelle entstehen. Jeder zu addierende BCD-Zahl bzw. BCD-Ziffer entspricht eine Dualzahl zwischen 0 und 9. Eine ggf. 5-stellige binäre Zwischensumme s = X(4) + Y(4) + c i- entsteht, die zwischen 0 und 9 liegen kann. Darin entspricht s 4 dem Übertrag c i in die nächste Stelle. Da in der BCD-Darstellung s 5 =s 6 =s 7 =0 gilt, wird die Summe im folgenden einfach mit S(4) bzw. S(5) dargestellt. Das zweistufige Additionsverfahren lautet: (i) s = X(4) + Y(4) + c i- (ii) SUMME := falls G S = dann S(5)= s+6 sonst S(4)=s, (iii) wobei Schritt (ii) die Binär-BCD-Umwandlung vollzieht. Beispiel: 98 + 47 = 45 00 000 (98) + 000 0 (47) G= + 00 + 00 0 G= + 00 000 000 00 4 5 Die Subtraktion von BCD-Zahlen wird auf die Addition des 0- oder 9-Komplementszurückgeführt.

8. Rechnerarithmetik 9 8.6 Darstellung gebrochener Zahlen 8.6. Gleitkommazahlen Bei der Verwendung von m Bits lassen sich 2 m verschiedene Zahlen darstellen. Bei der Verwendung von Vorzeichenzahlen lassen sich z.b. die Zahlen -(2 m- -) bis (2 m- -) in Abständen von darstellen, wenn man sich das Komma ganz rechts stehend vorstellt. Verschiebt man nun das Komma um q Stellen nach links, dann bedeutet das gegenüber der ganzzahligen Darstellung eine Division durch 2 q. Die Abstände zwischen den Zahlen betragen jetzt 2 -q, und damit lassen sich gebrochene Zahlen darstellen. Wird das Komma um q Stellen nach rechts verschoben, dann lassen sich noch sehr große Zahlen darstellen, allerdings nur mit der Genauigkeit 2 q. Wir sprechen von einer Festkommazahl, wenn man sich das Komma an einer bestimmten festen Stelle vorstellt. Verwendet man zusätzliche Bits, die die Stellung des Kommas angeben, dann spricht man von einer Gleitkommazahl oder einer halblogarithmischen Darstellung. Dadurch läßt sich ein größerer Zahlenbereich überstreichen. Die darzustellende Zahl x wird in eine Mantisse mx und einen Exponenten ex zur Basis b aufgespalten: x = (mx) b ex Die Basis b stimmt meist mit der Basis des Zahlensystems der Mantisse überein. Im folgenden wird angenommen, daß die Mantisse durch 2K-Zahlen dargestellt wird. Der Exponent läßt sich ebenfalls in dieser Form darstellen, obwohl auch andere Darstellungen gebräuchlich sind. Eine Gleitkommazahl wird in einem Rechner z.b. durch eine 24-Bit-Mantisse und einen 8-Bit-Exponenten repräsentiert, wobei diese Anteile in einem oder in mehreren Maschinenwörtern untergebracht werden können. Je nach Größe der Mantisse werden verschiedenen Gleitkommazahlen unterschieden: mx : Ganze Gleitkommazahl mx < : Gebrochene Gleitkommazahl Bei der ganzen Gleitkommazahl steht also das Komma ganz rechts, bei der gebrochenen Gleitkommazahl ganz links (hinter der Vorzeichenstelle). Die gebrochene Gleitkommazahl hat den Vorteil, daß bei der Multiplikation die Ergebnismantisse wieder kleiner als ist, und die Exponenten ohne Korrektur addiert werden können. Die Zahlendarstellung durch Mantisse und Exponent wird erst dann eindeutig, wenn für mx bestimmte Grenzen festgelegt werden.

20 Informatik II Für die 2K-Darstellung sehen die Grenzen folgendermaßen aus: Mantisse der ganzen Gleitkommazahl Mantisse der gebrochenen Gleitkommazahl Definitionsbereich mx Wertebereich MX Definitionsbereich mx Wertebereich MX -2 m-... -2 m-2-00...0... 0... -... -0,5-2 -m+,00...0...,0... 2 m-2... 2 m- - 00...0... 0... 0,5... -2 -m+ 0,0...0... 0,... Also für m = 3: -4... - 00... - -0,75,00,0 2... 3 00... 0 0,5 0,75 0,0 0, Diese so beschränkten Mantissen sind normalisiert und haben die Eigenschaft, daß die beiden links stehenden Bits zueinander negiert sind. In der Tabelle (siehe unten) sind die normalisierten Gleitkommazahlen für m=3 Stellen dargestellt. (Für die einfache Abwicklung der Gleitkomma-Operationen ist es sinnvoll, die größte negative Gleitkommazahl (mx = 00...0) zu verbieten und dafür die Gleitkommazahl 0...0 zu erlauben.) Die gebrochenen Gleitkommazahlen sind dann immer betragsmäßig kleiner als Eins, und der darstellbare Zahlenbereich liegt symmetrisch zur Null. Wert 2K-D Norm. ganze Gkz. Norm. gebr. Gkz. x X(3) mx 2 ex MX (2K) mx 2 ex MX (2K) -4 00-4 2 0 00-2 2,00-3 0-3 2 0 0-0,75 2 2,0-2 0-2 2-00 - 2,00 - - 2-2 00-2 0,00 0 000 0 2 0 000 0 2 0 0,00 + 00 2 2-00 0,5 2 0,0 +2 00 2 2 0 00 0,5 2 2 0,0 +3 0 3 2 0 0 0,75 2 2 0,

8. Rechnerarithmetik 2 Ein Problem bei der Gleitkommazahlen ist die Darstellung der Null. Man verwendet entweder die kleinste darstellbare Zahl, wodurch sich unangenehme Rechenfehler einschleichen können, oder stellt sie durch den Sonderfall mx=0 und ex=0 dar. Man kann das Vorzeichenbit der normalisierten Mantisse einsparen, wenn man berücksichtigt, daß die beiden links stehenden Bits zueinander negiert sind. Es ist zweckmäßig, für die Null die kleinste darstellbare Zahl (oder den kleinsten Exponenten) zu wählen und diese gesondert abzufragen, um Rechenfehler zu vermeiden. 8.6.2 Addition von Gleitkommazahlen Es soll die Summe von zwei Gleitkommazahlen gebildet werden. s = ms 2 es = mx 2 ex + my 2 ey Bevor die Addition durchgeführt werden kann, muß der kleinere Exponent dem größeren Exponent angeglichen werden. Gleichzeitig muß die Mantisse der GK-Zahl mit dem kleineren Exponent "nach rechts" verschoben werden: ( ex ey) ex es ( mx + my 2 ) 2 für ex ey ms 2 = ( ey ex) ey ( my + mx 2 ) 2 für ex < ey Im Anschluß an die Addition wird die Summe normalisiert, d.h., die Mantisse wird so verändert, daß sie betragsmäßig zwischen festgelegten Grenzen liegt. (Da der Wert der GK-Zahl unverändert bleiben soll, muß der Exponent entsprechend korrigiert werden.) Flußdiagramm: mx := mx 2 - k es := ey Anfang k := ex-ey < 0 > 0 k = 0 es := ey ms := mx+my Normalisieren Ende my := my 2 -k es := ex