1 : Die Rechnungsarten

Ähnliche Dokumente
3 Rechnen und Schaltnetze

Grundlagen der Informatik

Einführung in die Informatik I

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

2 Darstellung von Zahlen und Zeichen

Zahlensysteme Seite -1- Zahlensysteme

Binäre Gleitkommazahlen

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

Binärdarstellung von Fliesskommazahlen

Technische Informatik - Eine Einführung

2. Negative Dualzahlen darstellen

Zahlensysteme. von Christian Bartl

Zeichen bei Zahlen entschlüsseln

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?

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

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

N Bit binäre Zahlen (signed)

Vertiefungsstoff zum Thema Darstellung von Zahlen

Zahlensysteme Das 10er-System

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

Englische Division. ... und allgemeine Hinweise

Computerarithmetik ( )

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlendarstellungen und Rechnerarithmetik*

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Primzahlen und RSA-Verschlüsselung

Im Original veränderbare Word-Dateien

Eine Logikschaltung zur Addition zweier Zahlen

Professionelle Seminare im Bereich MS-Office

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

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

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

Grundlagen der Informatik Übungen 1.Termin

Daten verarbeiten. Binärzahlen

Übungsaufgaben. - Vorgehensweise entsprechend dem Algorithmus der schriftlichen Multiplikation

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

Dossier: Rechnungen und Lieferscheine in Word

Einführung in die Programmierung

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

Mikro-Controller-Pass 1

Grundlagen der Informatik I Informationsdarstellung

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

7 Rechnen mit Polynomen

Grundlagen der Informatik (BSc) Übung Nr. 5

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Daten, Informationen, Kodierung. Binärkodierung

Negative Zahlen. Lösung: Ordne in einen Zahlenstrahl ein! 7;5; 3; 6. Das Dezimalsystem

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

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

Das Maschinenmodell Datenrepräsentation

6.2 Scan-Konvertierung (Scan Conversion)

Das Rechnermodell - Funktion

Theoretische Informatik SS 04 Übung 1

Information in einem Computer ist ein

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

EINFACHES HAUSHALT- KASSABUCH

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

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

1 Mathematische Grundlagen

HIER GEHT ES UM IHR GUTES GELD ZINSRECHNUNG IM UNTERNEHMEN

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

Zwischenablage (Bilder, Texte,...)

Grundlagen der Informatik 2 Grundlagen der Digitaltechnik. 1. Zahlensysteme

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Leichte-Sprache-Bilder

Übung RA, Kapitel 1.2

Programmierkurs Java

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

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.

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

AZK 1- Freistil. Der Dialog "Arbeitszeitkonten" Grundsätzliches zum Dialog "Arbeitszeitkonten"

Was meinen die Leute eigentlich mit: Grexit?

0 Im folgenden sei die Wortlänge gleich 8 (d. h.: es wird mit Bytes gearbeitet).

Binär- und Hexadezimal-Zahl Arithmetik.

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

Grundlagen der Informatik Übungen 1. Termin Zahlensysteme

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Lineare Gleichungssysteme

Fallbeispiel: Eintragen einer Behandlung

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

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

Qualitätsbedingungen schulischer Inklusion für Kinder und Jugendliche mit dem Förderschwerpunkt Körperliche und motorische Entwicklung

Tutorial: Entlohnungsberechnung erstellen mit LibreOffice Calc 3.5

Hinweise zum Ausfüllen der Zeiterfassung

Hinweise zum Übungsblatt Formatierung von Text:

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Was man mit dem Computer alles machen kann

Mathematische Grundlagen 2. Termrechnen

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

Lineare Gleichungssysteme

Berechnungen in Access Teil I

1 topologisches Sortieren

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Schritt für Schritt zur Krankenstandsstatistik

Kapitel 4A: Einschub - Binärcodierung elementarer Datentypen. Einschub: Teile aus Kapitel 2 in Küchlin/Weber: Einführung in die Informatik

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

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

Grundlagen der Theoretischen Informatik, SoSe 2008

Kapitel 2. Zahlensysteme, Darstellung von Informationen

Transkript:

1 von 22 23.10.2006 14:08 0 : Inhalt von Kapitel DAT 1 : Die Rechnungsarten 2 : Die Worte 3 : Hilfsprozessoren 4 : Binäre Zahlendarstellung 5 : Interpretationen 6 : Division mit Rest 7 : Horner Schema 8 : Umrechnungen 9 : Oktal/Hexadezimal 10 : Addition 11 : Schul-Subtraktion 12 : Vorzeichen-Betrag-Notation 13 : Basiskomplement-Notation 14 : Carry/Overflow 15 : Subtraktion 16 : Multiplikation 17 : Division 18 : Gleitkomma Zahlen 19 : Das logische AND 20 : Das logische OR 21 : Das logische NOT 22 : Das logische XOR 23 : Der Shift SHL 1 : Die Rechnungsarten Aufgabe der ALU ist es auf einige Steuersignale hin elementare Operationen auf die Bitfolgen in seinen zwei Eingängen auszuführen Die booleschen Operationen NOT, AND, OR, XOR, NAND, NOR, EQ arbeiten bitweise (parallel auf allen Bits gleichzeitig). Die shift Operationen SHL, SHR, verschieben alle Bits der ALU-Ausgabe gleichzeitig um (ein oder mehrere) Bits nach rechts oder links. Sie werden nicht von der ALU selbst, sondern von einem nachgeschalteten Schieberegister ausgeführt. Die binäre Addition und Subtraktion wird in einem Schrittweisen Durchgang Bit für Bit ausgeführt, d.h. eine

2 von 22 23.10.2006 14:08 Addition/Subtraktion von n-bit erfordert n elementare ALU-Berechnungen. Die binäre Multiplikation und Division wird jeweils als ein Zyklus aus Addition und Shift von ALU und Schieberegister gemeinsam ausgeführt, d.h. eine Multiplikation/Division von n-bit erfordert n 2 elementare ALU-Berechnungen. Welche der vielen Operationen gerade ausgeführt wird, wird von der Steuerlogik kontrolliert. 2 : Die Worte

3 von 22 23.10.2006 14:08 Zentrales Organ der Prozessoren ist die ALU, der alle Rechenaufgaben obliegen. Die ALU kennt als einzige Daten die n-bit-folgen (Worte) für ein festes n ( n= 8, 16, 32 oder 64), von denen sie 2 entgegennimmt und 1 als Ergebnis produziert. Im Extremfall kann die ALU unabhängig von beiden Eingaben eine konstante Ausgabe (z.b. 00...01) produzieren, dann sprechen wir von einer 0-stelligen Operation. Manchmal hängt das Ergebnis nur von einer der beiden Eingaben ab (z.b. die Shifts, das Logische NOT oder das arithmetische Negativ -),dann sprechen wir von einer 1-stelligen Operation. Im Normalfall hängt das Resultat von beiden Eingaben ab (z.b. das logische AND oder die arithmetische Addition +). 3 : Hilfsprozessoren Werden vom Rechner Bitfolgen auch anderer Länge bearbeitet, so stehen dafür meist andere Spezialprozessoren (mit eigener ALU, und speziell dafür eingerichteten Operationen) zur Verfügung; meist arbeiten diese Prozessoren selbständig aber auf Veranlassung durch den zentralen Prozessor. Beispiele dafür sind Der Speicherzugriff der Speicherinhalte in die zentralen Register zur Weiterverarbeitung mit dem Prozessor und Schieberegister holt, wird oft mit einem kleine

4 von 22 23.10.2006 14:08 Hilfsprozessor bewerkstelligt, der dann fest in die CPU integriert ist. Der DMA (direct memory access) der meist einen Block von mehreren Worten gleichzeitig aus einem Peripheriegerät unmittelbar in den Speicher schreibt. Der Float-Coprozessor, der einen speziellen Typ von Bitfolgen als besonderen Datentyp (Gleitkomma-zahlen als rechnerinterne Repräsentation von reellen Zahlen) separat bearbeitet. Der Graphikcontroller der große Blöcke von Bytes (8-Bit-Folgen) als Bildschirm-Inhalt interpretiert und deren aktuelle Darstellung produziert. 4 : Binäre Zahlendarstellung Ältere Zahlensysteme der Geschichte (z.b die Römischen Zahlen) gehen auf ein einfaches Strichsystem (Bierdeckel = V, = X,...) zurück und sind außer für die Addition und Subtraktion (Aneinanderhängen und Wegstreichen) nur sehr schwer zu gebrauchen Die Verwendung unseres heutigen Zahlensystems (dezimal) und des im Computer gebräuchlichen (binär-)systems geht auf die Erfindung der Zahl 0 und damit der Stellenwertsysteme durch die Araber zurück. Anders als in älteren Systemen ist die größe einer darstellbaren natürlichen Zahl (0,1,2,3...) nicht mehr beschränkt. Ein Stellenwersystem ist gekennzeichnet durch: Die Basis: n Die Ziffern(-Symbole) für 0,1,2,...,n-1. Die Zahlen sind beliebige Ziffern-Folgen a k a k-1...a 1 a 0.

5 von 22 23.10.2006 14:08 Die Ziffernfolge a k a k-1...a 1 a 0 wird interpretiert als der Wert a k n k + a k-1 n k-1 +...a 1 n 1 + a 0 n 0 führende 0-en (etwa a k =0) können also ignoriert oder hinzugefügt werden, ohne den Wert zu ändern. Wichtige Stellenwertsysteme sind: Das Dezimalsystem mit den Ziffern {0,1,2,3,4,5,6,7,8,9} Das Binärsystem mit den Ziffern {0,1} Das Octalsystem mit den Ziffern {0,1,2,3,4,5,6,7} Das Hexadezimalsystem mit den Ziffern {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} 5 : Interpretationen Grundsätzlich behandelt ein Rechner Bitfolgen fester Länge, z.b. 1 0 1 0 0 1 1 1 Diese können dann vom Benutzer auf verschiedene Weise interpretiert werden: vorzeichenlose Binärzahlen : 167 vorzeichenbehaftete Binärzahlen : -89 VZ alphanumerische Zeichen (Ascii) : Gleitkomma-Zahlen (reals): -28 VZ EXP MAN Bitmap (1x8-Graphik) 6 : Division mit Rest

6 von 22 23.10.2006 14:08 Die Umrechnung von einer Darstellung in eine Andere hängt davon ab, in welcher Darstellung der umwandelnde selbst rechnet. Division mit Rest dient zur Umrechnung aus der eigenen Basis (beim Rechner 2) in die fremde Basis (beim Rechner z.b. 10) Als ein Speichermedium benötigt man ein Register (ACCU) zur Ablage der umzuwandelnden Zahl und danach jeweils zur Ablage des Quotienten Das zweite Speichermedium ist ein LIFO-Puffer (last in first out, Stack) in den die jeweils berechneten Raste abgelegt werden. Die Umzurechnende Zahl wird in den ACCU geladen Der ACCU wird so lange mit Rest durch 1010 (=10) geteilt, bis er 0 ist, dabei wird jeweils der 4-Bit Rest (0000,...,1001) als Ziffer (0,...,9 : die 4 Bit 0011 werden davor geschrieben) im Stack abgelegt und der Quotient zurück in den ACCU geschrieben. Als Ergebnis wird nun der Stackinhalt ausgegeben, d.h. die berechneten Reste werden in der umgekehrten Reihenfolge ihres Entstehens auf den Bildschirm geschrieben.. Vom Benutzer, der dezimal rechnet, wird die Division mit Rest benutzt um eine Dezimalzahl (die eigene Basis 10) in eine fremde Basis (z.b. 2) umzurechnen Als Notitzblatt verwenden wir zwei übereinanderstehende Tabellenzeilen mit ausreichender Länge (wenn wir uns verschätzen muß mitten in der Rechnung die Tabelle nach links verlängert werden, schlimmstenfalls durch einen Kopiervorgang in eine längere Tabelle) Die obere Zeile nimmt die wechselnden Inhalte des (vom Rechner benutzten) ACCU auf, die untere Zeile nimmt jeweils die

7 von 22 23.10.2006 14:08 Reste der Division durch 2 auf. Die umzurechnende Dezimalzahl (z.b. 137) wird in die obere Zeile in das rechte Feld geschrieben, alle anderen Felder bleiben zunächst leer. Nun wird schrittweise die am weitesten links stehende Zahl der ersten Zeile durch 2 dividiert, der Rest wird un das Feld darunter geschrieben und der Quotient in das Feld links daneben. Die Berechnung endet, sobald der Quotient 0 ist. In der zweiten Tabellenzeile steht nun die Binärdarstellung der umzurechnenden Zahl, beachte, daß immer die Reste in umgekehrter Rreihenfolge ihres Entstehens gelesen werden! 0 1 2 4 8 17 34 68 137 ACCU 1 0 0 0 1 0 0 1 STACK 7 : Horner Schema Das Horner-Schema ist eigentlich ein Verfahren um den Wert eines Polynoms zu berechnen, es kann deshalb eingesetzt werden für die Umrechnung aus der fremden Basis (Beim Rechner 10) in die eigene Basis (2) Hier benötigen wir den Eingabepuffer, aus dem wir nacheinander die Ziffern der eingegebenen Zahl entnehmen und ein Register ACCU, in das wir die Zwischenergebnisse ablegen. Lade in den ACCU eine 0 wiederhole, bis im Eigabepuffer keine Ziffer mehr steht: lies die nächste Ziffer aus dem Eingabepuffer und streiche die ersten 4 bit Multipliziere den ACCU mit 1010 (=10)

8 von 22 23.10.2006 14:08 addiere diese 4-bit Binärzahl zum ACCU. sind keine Ziffern mehr im Puffer, so steht im Accu die eingegebene Zahl als Binärzahl Das Horner-Schema wird vom Benutzer für die Umrechnung aus der fremden Basis (2) in die eigene Basis (10) verwendet. Als Notitzblatt verwenden wir zwei übereinanderstehende Tabellenzeilen (diesmal von links nach rechts verwendet) Die obere Zeile nimmt die wechselnden Inhalte des (vom Rechner benutzten) ACCU auf, in der untere Zeile stehen die Bits der Binärzahl (Eingabepuffer). Schreibe ins linke Feld der oberen Zeile eine 0, alle anderen Felder dieser Zeile sind leer. wiederhole, bis in der zweiten Zeile kein Bit mehr steht: lies das Bit, das unter der am weitesten rechts stehenden Zahl steht Multipliziere die Zahl darüber mit 2 addiere dazu das Bit (0 oder 1) und lege das Ergebnis ins Feld rechts neben der Zahl. sind keine Ziffern mehr im Puffer, so steht im rechten Feld der oberen Zeile die berechnete Dezimalzahl. 0 1 2 4 9 18 37 74 149 ACCU 1 0 0 1 0 1 0 1 EIN 8 : Umrechnungen möchte man allgemeiner zwischen zwei (unbekannten) Darstellungen umrechnen (z.b. Basis 3 in Basis 7), so muß man in zwei Schritten vorgehen: mit Division in die eigene Basis umrechnen

9 von 22 23.10.2006 14:08 mit Horner Scheme in die andere Basis umrechnen 9 : Oktal/Hexadezimal wesentlich einfacher stellt sich die Umrechnung von einer Basis (z.b. 2) in eine Potenz der Basis (z.b. 8 oder 16) dar. Hier gruppiert man einfach die Ziffern der kleineren Basis in gleichgroße Gruppen, die dann die Ziffern der größeren Basis repräsentieren. Da Binärzahlen sehr lang werden können, kann man diese Technik zu Erhöhung der Lesbarkeit und Fehlerresistenz anwenden. Oktalsystem (Basis 8 = 2 3 ): Gruppierung in 3-er Gruppen Beispiel: 100 101 001 010 100 111 001 010 2 = 45124712 8 Hexadezimalsystem(Basis 16 = 2 4 )Beispiel: 1001 0100 1010 1001 1100 1010 2 = 94A9CA 16 10 : Addition 1 0 0 0 1 0 0 1 SUMND 0 1 1 0 1 0 1 1 SUMND 0 0 0 1 0 1 1 0 CARRY 1 1 1 1 0 1 0 0 SUMME Die Addition von Binärzahlen wird ganz entsprechend zur Schulmethode für Dezimalzahlen durchgeführt, nur daß wir

10 von 22 23.10.2006 14:08 viel weniger Ziffern haben (0,1). Beide Summanden werden rechtsbündig untereinander geschrieben und wenn nötig die kürzere Zahl vorne mit 0'en auf gleiche Länge ergänzt. In die Übertrag-Zeile (Carry) kommen zunächst lauter 0'en. Nun wird von hinten nach vorne in jeder Spalte jeweils die Summe der Ziffern der drei oberen Zeilen gebildet, wenn dabei die Summe 2 oder 3 wird, wird 2 davon abgezogen (0 oder 1) und dafür in der nächsten Spalte davor in der Carry Zeile eine 1 eingetragen. Das Ergebnis kommt in die Summenzeile. Es kann passieren, daß das Ergebnis länger wird, als die beiden Summanden, wenn noch ein Carry in der Spalte vor den beiden Summanden entsteht. Die leeren Zellen werden behandelt, als wären sie mit 0'en gefüllt. Bei einem Rechner mit festem Zahlenformat wird diese Verlängerung über das Format hinaus als Fehlersituation CARRY behandelt. 11 : Schul-Subtraktion 1 0 0 0 1 0 0 1 MINU 0 1 1 0 1 0 1 1 SUBT 1 1 1 1 1 1 0 0 CARRY 0 0 0 1 1 1 1 0 ERGEB Bisher haben wir die Darstellung ausschließlich von positiven ganzen Zahlen betrachtet. Wenn wir also die Subtraktion a-b ganzer Zahlen nach der Schulmethode realisieren wollen, müssen wir vorher sicherstellen, daß der Minuend a größer ist als der Subtrahend b: Den Größenvergleich kann man beim rechtsbündigen

11 von 22 23.10.2006 14:08 Untereinanderschreiben daran erkennen, daß von links das erste Feld, wo sich a und b unterscheiden, a eine 1 und b eine 0 haben muß. Bei der Schulmethode ziehen wir stets die Summe der Ziffern aus den Zeilen SUBT und CARRY von der Ziffer in MINU ab. Dabei kann es geschehen daß wir eine größere von einer kleineren Zahl abziehen müßten, in diesem Fall wird zur Ziffer in MINU zunächst 2 addiert und dann die Subtraktion durchgeführt, als Ausgleich kommt in die nächste Spalte links beim CARRY eine 1. Haben wir den Größenvergleich vorher nicht gemacht und b ist größer als a, dann entsteht bei diesem Verfahren ein Carry in der Spalte links von den Zahlen, d.h. der Carry-Fehler weist in diesem Fall darauf hin, daß die Subtraktion nicht zulässig war. Hinweis:! die Schulmethode der Subtraktion wird im Rechner nicht angewandt! 12 : Vorzeichen-Betrag-Notation Wie lassen sich nun negative Zahlen darstellen? Als Benutzer sind wir an die Vorzeichen-Betrag-Notation gewöhnt, in der das erste Bit als Vorzeichen interpretiert wird (0=+, 1=-) und der Rest als der positive Betrag der Zahl interpretiert wird. Aus einigen Gründen ist diese Notation für den Rechner nicht optimal. Das Negative einer Zahl wird einfach durch den Wechsel des ersten Bits berechnet. Bei der Addition und Subtraktion muß nun ein Vorzeichenund Größenvergleich gemacht werden, um in einer Fallunterscheidung zu entscheiden, welches Vorzeichen das Ergebnis haben wird und ob es nach der Additions- oder

12 von 22 23.10.2006 14:08 Subtraktionsmethode bestimmt wird. Diese zusätzlichen Fallunterscheidungen machen die Nutzung dieser negativen Zahlen schwerfällig und daher für den Gebrauch im Rechner ungeeignet. 13 : Basiskomplement-Notation Geeigneter für die negativen Zahlen auf dem Rechner ist die Basiskomplement-Darstellung. Auch hier ist das erste Bit das Vorzeichen, aber im Falle negativen Vorzeichens (1) steht dahinter nicht der Betrag, sondern die Zahl, die zum Betrag addiert die 0 ergibt.dies kann natürlich nur so geschehen, daß bei der Addition auf den vorgesehenen Stellen lauter 0'en entstehen, aber in der ersten überzähligen Stelle eine 1 (Carry-Fehler). 1 0 0 0 1 0 0 0 A 0 1 1 1 0 1 1 1 NOT A 0 0 0 0 1 1 1 1 CARRY 0 1 1 1 1 0 0 0 -A Das Negative einer Zahl hängt also davon ab, in welchem Format (8-Bit, 16-Bit,...) der Rechner mit Zahlen rechnet. Wie kann man das Negative in diesem Sinne berechnen. Für eine n-bit Zahl a muß -a die n-bit Zahl sein, die mit a die Summe 2 n ergibt, also -a = 2 n -a = (2 n -1)-a+1. Beachte, daß (2 n -1) die Binärdarstellung 111...1 hat, also die Subtraktion (2 n -1)-a ohne Überträge auskommt und einfach in a die 0'en und 1'en vertauscht. Wir erhalten also -a, wenn wir von a das sog. Einerkomplement (0'en und 1'en vertauschen, NOT) bilden und dann 000...01 addieren. (Beachte, daß wir statt Addition

13 von 22 23.10.2006 14:08 nur noch kopieren müssen, sobald der erste Carry=0 auftritt : graue Felder) Wir benötigen nun nur noch eine einzige Addition, die der Binärzahlen Die Subtraktion erfolgt so, daß zunächst der Subtrahend ins Negative gewandelt wird und danach die Addition durchgeführt wird. Beachte, daß das Auftreten eines Carry-Fehlers für Zahlen mit Vorzeichen ganz normal ist und nicht als Fehler behandelt werden sollte. 14 : Carry/Overflow Der Prozessor kennt, wie schon gesagt nur einen einzigen Datentyp, nämlich die Bitfolgen einer festen Länge n. Nur der Benutzer weiß um die gewollte Interpretation als vorzeichenlose Zahl oder als Zahl mit Vorzeichen. Beachte, daß das Auftreten eines CARRY-Fehlers für Zahlen mit Vorzeichen ganz normal ist und nicht als Fehler behandelt werden sollte. Es gibt allerdings auch eine Fehlersituation bei der Addition von Zahlen mit Vorzeichen, denn wenn beide Summanden dasselbe Vorzeichen haben, dann muß auch die Summe dasselbe vorzeichen haben, andernfalls ist die Addition betragsmäßig aus dem korrekten Ergebnisbereich herausgerutscht. Man nennt diese Fehlersituation einen Überlauf oder OVERFLOW. Beachte, daß der Overflow-Fehler keinerlei Bedeutung für vorzeichenlose Zahlen hat. Der Carry-Fehler ist dadurch gekennzeichnet, daß an der

14 von 22 23.10.2006 14:08 vordersten Stelle noch ein Carry in eine zusätzliche Stelle auftritt. Der Overflow-Fehler ist dadurch gekennzeichnet, daß in den 3 ersten Stellen der Summanden und des Ergebnisses eine der beiden Situationen 0,0,1 oder 1,1,0 auftritt. 15 : Subtraktion Die Basiskomplement Darstellung ist geeignet, die Subtraktion für Zahlen fester Bitzahl auf die Addition zurückzuführen, deshalb kennt der Rechner keine besondere Subtraktion 0 1 1 0 0 1 0 0 1 MINU 201 0 0 1 0 1 0 0 1 1 SUBT 83 1 1 0 1 0 1 1 0 0 KOMPL -84 1 0 0 0 1 0 0 1 1 CARRY 0 1 1 1 0 1 1 0 DIFF 118 Der Minuend wird durch sein Komplement ersetzt dann wird an die letzte Stelle des Carry eine 1 gesetzt (Komplement +1) nun führt man die Addition durch. Um die Rolle des Carry in der überzähligen Stelle vorne zu verstehen, denken wir uns die Überzählige Spalte als das Vorzeichen im 1 größeren Format. Der Minuend als vorzeichenlose Zahl hätte eine 0 (+) Das Komplement des vorzeichenlosen Subtrahenden hätte eine 1 (-) Wenn also vorne ein Carry entsteht, ergibt er mit der 1 aus dem Komplement eine 0, also das Vorzeichen +, wie es das vorzeichenlose Ergebnis haben sollte. Entsteht aber vorne kein Carry, so bedeutet dies ein negatives Ergebnis, also war der Minuend kleiner als der

15 von 22 23.10.2006 14:08 Subtrahend und die Subtraktion für vorzeichenlose Zahlen nicht erlaubt. Bei der Subtraktion ist der CARRY-Fehler also ein Carry=0 in der überzähligen Spalte. Wir können die Subtraktion also auch als Vergleichsinstrument für vorzeichenlose Zahlen verwenden, wenn wir nur den Carry beobachten bzw. ob im Ergebnis nur 0'en auftauchen. 16 : Multiplikation 1 0 0 0 1 0 0 1 FAK1 0 1 1 0 1 0 1 1 FAK2 0 1 1 0 1 0 1 1 FAK2 0 1 1 0 1 0 1 1 FAK2 0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 PROD Auch bei der Multiplikation positiver Zahlen arbeitet das Schulverfahren sehr gut, zumal das "kleine Einmaleins" mit den Ziffern 0, 1 extrem klein ist. Da sich beim multiplizieren die Stellenzahlen der Faktoren ungefähr addieren, kann die Multiplikation leicht zu einem Überlauf führen, wenn die beiden Faktoren schon recht groß sind. Auf Prozessorebene wird diesem Fakt oft dadurch Rechnung getragen, daß für das Ergebnis eine doppelt so lange Bitfolge vorgehalten wird, als für die Faktoren Die beiden Faktoren werden nun untereinander in zwei Tabellenzeilen geschrieben und darunter eine Zeile 00..0 für das Produkt, dabei sehen wir für den zweiten Faktor und das Produkt doppelt so viele Bits vor, wie für den ersten Faktor. Wiederhole die folgenden Schritte solange, bis unter dem ersten Faktor nur noch freie Felder stehen:

16 von 22 23.10.2006 14:08 Steht über dem letzten Bit des zweiten Faktors (dem aktuellen Bit) eine 1, so addiere den zweiten Faktor zum Ergebnis, dabei werden freie Felder wie 0'en behandelt. Ist das aktuelle Bit eine 0, so wird nicht addiert. Schiebe den zweiten Faktor um ein Bit nach links, wobei das freiwerdende Feld rechts frei bleibt, also nicht mit einer Ziffer besetzt wird. Dadurch verschiebt sich auch das aktuelle Bit um ein Feld nach links Nun steht in der Produktzeile das Endergebnis. Stehen in der vorderen Hälfte Bits!= 0, so ist das Ergebnis zu groß für das normale Zahlenformat und der Rechner signalisiert auch hier einen CARRY-Fehler. Die Multiplikation zweier n-bit-zahlen besteht also aus n Shifts jeweils mit oder ohne eine Addition, also schlimmstenfalls n Additionen, was n 2 elementaren Operationen entspricht. 17 : Division 0 1 1 1 0 0 1 0 1 0 1 1 0 0 1 DIVID 0 1 1 0 1 0 1 1 DIVIS 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 DIVID 0 1 1 0 1 0 1 1 DIVIS 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 DIVID 0 1 1 0 1 0 1 1 DIVIS 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 DIVID 1 0 0 0 1 0 0 1 QUOTI Die Division arbeitet genau umgekehrt: Wir erlauben für den Dividend das doppelt so lange Format Der Divisor wird linksbündig unter den Dividend geschrieben (nachfolgend leere Zellen) Wiederhole die folgenden Schritte solange, wie der Divisor

17 von 22 23.10.2006 14:08 noch ganz in das Feld passt: Ist der Divisor kleiner gleich dem Dividend, ziehe ihn vom Dividend ab und trage in den Quotient eine 1 in die Spalte, in der das letzte Bit des Divisors (das aktuelle Bit) steht, andernfalls trage in das aktuelle Bit eine 0 ein. Schiebe den Divisor um ein Bit nach rechts, wobei das freiwerdende Feld links frei bleibt, Dadurch verschiebt sich auch das aktuelle Bit um ein Feld nach rechts Nun steht in der Quotientenzeile das Endergebnis. In der Dividendenzeile bleibt eine Zahl stehen, die kleiner ist, als der Divisor, dies ist der Rest, der bei der ganzzahligen Division immer entsteht. Die Division zweier n-bit-zahlen besteht also aus n Shifts jeweils mit einem Vergleich/Subtraktion, was n 2 elementaren Operationen entspricht. 18 : Gleitkomma Zahlen Eine Gleitkommazahl besteht aus 3 Abschnitten, dem Vorzeichen, dem Exponent und der Mantisse. VZ EXP Das Vorzeichen ist wie üblich 0 (=+) oder 1 (=-). Der Exponent ist eine ganze Zahl mit Vorzeichen (im Beispiel 8 Bit also zwischen -128 und 127. Die Mantisse ist die Folge der Nachkommaziffern (vor dem Komma wird eine 0 angenommen). In unserem Beispiel gibt es bis zu 23 Stellen nach dem Komma. Die Gleitkommazahl wird dann wie folgt interpretiert:

18 von 22 23.10.2006 14:08 Vorzeichen * 2 Exponent-Mantissenlänge * Mantisse In manchen Formaten wird die Eindeutigkeit der Darstellung dadurch erzwungen, daß angenommen wird, daß nach dem Komma als erstes Zeichen eine 1 kommt, die dann nicht in der Darstellung auftreten muß. Daher wird der Mantissenbereich um ein Bit größer und statt der Mantisse wird in der Interpretation die Ergänzung der Mantisse mit vorne einer 1 genommen. Die Rechnungen mit Gleitkommazahlen sind deutlich komplizierter als die für ganze Zahlen und werden meist in speziell dafür ausgelegte Coprozessoren ausgelagert. Das Rechnen mit Gleitkommazahlen ist nicht präzise, weil immer wieder Rundungen gemacht werden müssen, daher werden Formate verschiedener Längen angeboten, um bessere Genauigkeit erzielen zu können, dennoch muß mit Rundungsfehlern immer gerechnet werden, insbesondere wenn mit Zahlen sehr verschiedener Größenordnung gerechnet werden muß. Als nicht-zahl Sonderwerte sind +, - und NaN (not a number) darstellbar, sie können in Fehler-Situationen als Ergebnis einer Rechnung auftreten. 19 : Das logische AND 1 0 0 0 1 0 0 1 MASKE 0 1 1 0 1 0 1 1 WERT 0 0 0 0 1 0 0 1 AND Das logische UND wird bitweise parallel durchgeführt und liefert eine 1, wenn beide beteiligten Bits 1 sind, sonst eine 0. Es gibt bei den logischen Operationen keine Fehlersituationen

19 von 22 23.10.2006 14:08 und sie werden in einem Schritt gleichzeitig auf allen Bits durchgeführt. Man kann sich den ersten "Summand" auch als eine "Maske" vorstellen, der alle Stellen "maskiert", wo er selbst 0 hat und die anderen Stellen des zweiten Summanden ungehindert durchläßt (graue Unterlegung). In dieser Sichtweise werden alle maskierten Stellen (weiß) 0 und alle nicht maskierten Stellen (grau) aus dem zweiten Summand übernommen. Man spricht in diesem Zusammenhang von dem UND-Gatter 20 : Das logische OR 1 0 0 0 1 0 0 1 MASKE 0 1 1 0 1 0 1 1 WERT 1 1 1 0 1 0 1 1 OR Das logische ODER wird bitweise parallel durchgeführt und liefert eine 0, wenn beide beteiligten Bits 0 sind, sonst eine 1. Es gibt auch beim OR keine Fehlersituationen und es wird in einem Schritt gleichzeitig auf allen Bits durchgeführt. Man kann sich den ersten "Summand" als eine "Maske" vorstellen, der alle Stellen "maskiert", wo er selbst 1 hat und die anderen Stellen des zweiten Summanden ungehindert durchläßt (graue Unterlegung). In dieser Sichtweise werden alle maskierten Stellen (weiß) 1 und alle nicht maskierten Stellen (grau) aus dem zweiten Summand übernommen. Man spricht in diesem Zusammenhang von dem ODER-Gatter

20 von 22 23.10.2006 14:08 21 : Das logische NOT 0 1 1 0 1 0 1 1 WERT 1 0 0 1 0 1 0 0 NOT Das logische NOT ist einstellig, wird bitweise parallel durchgeführt und vertauscht dabei 0 und 1 (wie 1-x). Es gibt auch beim NOT keine Fehlersituationen und es wird in einem Schritt gleichzeitig auf allen Bits durchgeführt. 22 : Das logische XOR 1 0 0 0 1 0 0 1 MASKE 0 1 1 0 1 0 1 1 WERT 1 1 1 0 0 0 1 0 XOR Das logische XOR (ausschließende ODER) wird bitweise parallel durchgeführt und liefert eine 0, wenn beide beteiligten Bits gleich sind, sonst eine 1. Es gibt auch beim XOR keine Fehlersituationen und es wird in einem Schritt gleichzeitig auf allen Bits durchgeführt. Man kann sich den ersten "Summand" als eine "Maske" vorstellen, der alle Stellen "maskiert", wo er selbst 0 hat und die Stellen des zweiten Summanden ungehindert durchläßt (graue Unterlegung), auf den nicht maskierten Stellen (wo er 1 hat) führt er auf den entsprechenden Bits ein logisches NOT (1-x) aus. Beachte, daß XOR wie die arithmetische Addition funktioniert

21 von 22 23.10.2006 14:08 nur keine bitweisen Überträge ausgibt. Sind (anders als in unserem Beispiel) an keiner Stelle beide Bits 1 (dann nennt man die Bitfolgen disjunkt), dann stimmt XOR mit ADD überein, weil in keinem Bit ein Übertrag entstehen kann. Diese Eigenschaft nutzt man oft aus um zwei kurze Bitfolgen aneinander zu hängen (in diesem Fall kann man übrigens auch das OR statt des XOR als Operation nehmen) Die logischen Operationen haben einen gewaltigen Geschwindigkeitsvorteil gegenüber der Addition 1 0 1 0 0 0 0 0 Teil1 0 0 0 0 1 0 1 1 Teil2 1 0 1 0 1 0 1 1 Zusammen 23 : Der Shift SHL Die Shift-Operationen werden auf einem speziell dafür ausgelegten Register, dem Schieberegister durchgeführt 1 1 0 0 1 0 1 1 EINGABE 1 1 0 0 1 0 1 1 0 SHL Der Links-Shift SHL ist einstellig und verschiebt jedes Bit der Eingabe um eine Position nach links. Das erste Bit der Eingabe fällt dabei weg und wird im Carry-Signal zwischengespeichert. Das letzte neu entstehende Bit der Ausgabe ist eine 0, die entstehende Ausgabe ist dann das Produkt 2*Eingabe(als vorzeichenlose Zahl), falls nicht eine 1 vorne wegfällt (CARRY-Fehler das Doppelte würde ein Bit mehr zur Darstellung brauchen) (als vorzeichenbehaftete Zahl liefert der SHR ebenfalls 2*Eingabe, falls nicht dabei das Vorzeichen wechselt, d.h. es

22 von 22 23.10.2006 14:08 gibt einen Overflow, wenn sich Carry und das neue erste Bit unterscheiden.