Benutzer:WissensDürster/Dualsystem

aus Wikipedia, der freien Enzyklopädie
Hier finden Arbeiten statt, die den Artikel Dualsystem stark erweitern und verbessern sollen. Unter anderem Brauchen wir Pendants zu en:Method of complements und en:Signed number representations
Artikel könnte auch unter dem Titel Computerarithmetik laufen ... man bräuchte einen Artikel der sich mit grundlegenden Probleme der Realisierung von Architekturen beschäftigt. Die Umsetzung ganz einfacher Grundelemente - eben Arithmetik ...

Hilfreich auch: Integer_(Datentyp)#Beispiele

Probleme

  • Wann muss man sich ein Rechenwerk vorstellen und wann ist eine Dualzahl "normal" ...
  • Was bedeutet es, wenn sich ein Rechenwerk "Vorzeichen" merkt ... (Lösung praktisch: das Vorzeichenbit im 2er Komplement)
    • (keine Lösung für die andere Varianten)
  • Vorzeichen und Betrag, sind Probleme an sich, Zitat:

„Another point to consider is that numbers written by hand with pencil and paper can be as large as we wish (limited only by the size of the paper and our endurance). By comparison, the size of numbers stored and mapiulated inside a computer is dictated by the physical elements used to represent them.“

The Definitive Guide to How Computers Do Math: Featuring the Virtual DIY Calculator, Clive Maxfield und Alvin Brown

Darstellung negativer Zahlen

Im "normalen" Dualsystem, wie es allgemein mathematisch betrachtet wird, haben wir einfach Folgen von Nullen und Einsen "auf dem Papier" ... wir kümmern uns nicht um deren Länge, es gibt keine Überläufe (links und rechts is immer noch etwas Platz).

Vorzeichen, d.h. ein Minus, schreiben wir einfach hin, symbolisiert als ein "-" vor der Ziffernfolge.

Das Rechenwerk aber, kann keine Vorzeichen erkennen. Es kennt nur 2 Zustände "an" und "aus", die wir uns anschaulich durch die zwei Ziffern "0" und "1" vertreten vorstellen. Da es zunächst kein Vorzeichen erkennen kann, braucht man für negative Zahlen Alternative Darstellungsmöglichkeiten.

Davon sind allgemein 4 bekannt:

Vorzeichen-Betrag Methode

  • 2 darstellungen für Null
  • Wertebereich: -(2^n-2^-k) und (2^n-2^-k)
  • "benachbarte Zahlen" haben Abstand 2^-k

Einerkomplement

  • 2 darstellungen für Null
  • Wertebereich: -(2^n-2^-k) und (2^n-2^-k)
  • "benachbarte Zahlen" haben Abstand 2^-k
  • Beispiel Abstand:

0000,0001 = 0,0625
0000,0010 = 0,1250
0000,0011 = 0,1875
Das heißt, im 8bit format mit 4 Vor- und 4 Nachkommastellen, kann z.B. die Zahl 0.0750 nicht dargestellt werden bzw. aufgrund von Rundungsproblemen, würden alle Werte von 0 bis 0,1250 auf die 0000,0001 abgebildet werden.

  • A_k1 = 2^n - 1 - A

Zweierkomplement

  • Wertebereich: -2^n und (2^n-2^-k) das ist doch falsch !
  • müsste sein: -2^n-1 und (2^n-1 - 2^-k)
  • nur eine Darstellung für die Null
  • Wertebereich ist sowieso unsymmetrisch
  • Null zählt zu den positiven Zahlen
  • die alleinstehende negative größste Zahl ist ihr eigenes Komplement, z.B. 4Bit -> 1000 == -8
  • A_k2 = 2^n - A
  • subtraktion wäre: A - B = A + B_k2 - 2^n

Exzess

Nun können wir also die Zahlen die wir vorher hatten auch negativ darstellen. Damit sind aber erst die Ganzen Zahlen erfasst. Auch kann ein Rechenwerk nur eine dieser Varianten in seiner Hardware implementieren (korrekt?). Es wird auch zunächst außer Acht gelassen, "wie" der Rechner physikalisch addiert oder ob es Überläufe gibt, d.h. wie die Speichergrößen skaliert sind.

Jede der 4 Methoden zur Darstellung negativer Zahlen ist nicht nur eine Operation auf allgemeinen Dualzahlen, sondern für sich genommen auch eine eigene Zahlendarstellung.

Diesen Zusammenhang muss man stets im Gedächtnis haben, denn ohne den Kontext zu kennen, kann man nicht sagen ob:

  • 110 die allgemeine Dualzahl 6 beschreibt
  • oder 110 die V-B-Variante von "-2" ist
  • oder gar ein Komplement
  • Problem: Man kann vor jede Zahl beliebig viele Nullen anhängen, ohne dass diese die Zahl verändern. Bildet man aber davon das Komplement wird jede dieser Nullen eine Eins und verfälscht das Ergebnis ...
  • Frage: kann 110 überhaupt ein Einerkomplement seien?? (Wertebereiche der Varianten angeben)
  • Vermutung: Jede Zahlendarstellung bedarf eigener Algorithmen um Subtraktion, Multiplikation oder Division auf die Addition zurückführen zu können. (stimmt, siehe pdf)
  • Addition unterscheidet sich auch schon - Berechnung einer n-bit Summe s zweier n-bit Dualzahlen a und b

Darstellung von Nachkommastellen

Festkomma

Gleitkomma

Rundunsverfahren

Fakten

  • Addition durch VB bei unterschiedlichen Vorzeichen erfordert einen Vergleich: nur möglich unter Zuhilfenahme des Einerkomplementes
  • Entwicklung eines separaten Subtrahierwerkes nicht sinnvoll, für a-b Verwendung der Additions-Hardware durch Zweierkomplement von -b
  • Multiplikation zweier n-bit Zahlen ist wiederholte Addition und Schiebeoperation (welche, wie?)
  • multiplikations vorzeichenlos: 2*n bit groß
  • mit vorzeichen: VB und 1K 2*n-1 bit, nur 2*n bit bei 2K
  • Vorzeichenmulti bei 2K Fallunterscheidung: a*(-b) und (-a)*b und (-a)*(-b)
  • viele ausgeklügelte andere varianten (z.b. booth)
  • Architektur muss auch Bindungsregeln festlegen, denn "Klammern" wird es kaum erkennen?!
  • -> Gilt A v B v C = (A v B) v C oder A v B v C = A v (B v C ) ?

• NICHT-Verknüpfungen binden stets stärker als ODER- und UNDVerknüpfungen • UND-Verknüpfungen binden stets stärker als ODER- Verknüpfungen

Literatur

  • Bebop to the Boolean Boogie: An Unconventional Guide to Electronics (Taschenbuch), Clive Maxfield (Autor) ISBN 1856175073
  • The Definitive Guide to How Computers Do Math: Featuring the Virtual DIY Calculator (Taschenbuch), von Clive Maxfield (Autor), Alvin Brown (Autor), ISBN 0471732788