Das negative Zweierkomplementzahlensystem Ines Junold 07. Dezember 2009 1 / 21 Inhaltsverzeichnis 1 Einleitung 2 Das konventionelle Zweierkomplement 3 Das negative Zweierkomplementsystem 4 Zusammenfassung 5 Quellenangaben 2 / 21 Einleitung Earl E. Swartzlander, jr. seit 1990 Universität von Texas, Austin leitete Entwicklung eines sehr schnellen Fließkomma- FFT- Prozessors Forschungsgebiet: Computer Engineering 3 / 21 Einleitung Motivation in Bildverarbeitung wird Zahl 1 häufig benötigt Problem: im konventionellen Zweierkomplement nicht möglich diese darzustellen Idee: neues Zahlensystem entwickeln, welches 1 darstellen kann 4 / 21 Das konventionelle Zweierkomplement Allgemein Möglichkeit, negative Zahlen im Dualsystem darzustellen Wertebereich: −(2n−1 ), ..., 0, ..., 2n−1 − 1 Beispiel: bei 8 Bit: −128(10) bis + 127(10) Darstellung und Umwandlung positive Zahlen: Vorzeichenbit (0) Bildungsvorschrift für negative Zahlen Binärstellen invertieren Wert der Quantisierungsstufe 2k addieren 5 / 21 Das konventionelle Zweierkomplement Beispiel für n = −2.2510 umrechnen 2.2510 = 010.012 invertieren: ¬[010.01] = 101.10 Quantisierungsstufe: 2−2 = 0.2510 = 0.012 Quantisierungsstufe addieren: 101.10 + 000.01 = 101.11 6 / 21 Das konventionelle Zweierkomplement Rechenoperationen: Addition und Subtraktion keine Fallunterscheidung Bildungsvorschrift Operanden A = (an−1 , an−2 , ..., a0 ) und B= (bn−1 , bn−2 , ..., b0 ) Summe S = (sn−1 , sn−2 , ..., s0 ) si = ai ⊕ bi ⊕ ci Übertrag ci , wobei c0 = 0 ci+1 = (ai ∧ bi ) ∨ (ai ∧ ci ) ∨ (bi ∧ ci ) Beispiel: −4 + 3 = −1 11111100 + 00000011 = 11111111 7 / 21 Das konventionelle Zweierkomplement Rechenoperationen: Addition und Subtraktion Abbildung: Volladdierer 8 / 21 Das konventionelle Zweierkomplement Vorzeichenerweiterung Ergebnis nicht im Wertebereich der Summanden oberste Stelle duplizieren und Stellenanzahl um 1 vergrößern Rechenoperation: Multiplikation Serienmultiplizierer oder Parallelmultiplizierer bei n Bit: Ergebnis 2n Bit Beispiel: -7 * -3 = 21 11111001 1 + 0000000 0 + 111001 1 = 11011101 − 11001 1 = 00010101 9 / 21 Das negative Zweierkomplementsystem Definition n−2 R = rn−1 − ∑ ri 2i−n+1 i=0 n-bit lange, gebrochene Zahl R negatives Zweierkomplement Vorzeichenbit rn−1 Beispiel für 5 8 R = 1 − (0 ∗ 20−(4+1) + 1 ∗ 21−(4+1) − 1 ∗ 22−(4+1) ) R = 1 − 1 ∗ 2−2 + 1 ∗ 2−3 R = 1 − 0, 25 + 0, 125 R = 1 − 0, 375 R= 5 8 10 / 21 Das negative Zweierkomplementsystem Vergleich 11 / 21 Das negative Zweierkomplementsystem Addition wie bei konventionellem Zweierkomplement Überlauf kann erkannt werden Addition - Beispiel 1 2 + 3 8 1.100 + 1.101 = 1.001 = 7 8 12 / 21 Das negative Zweierkomplementsystem Subtraktion auf Addition zurückführen Bits invertieren, 1 an niederwertigsten Bitstelle addieren Subtraktion - Umwandlung 1 4 1.110 Bits invertieren 0.001 1 am LSB addieren 0.001 = 0.010 13 / 21 Das negative Zweierkomplementsystem Multiplikation - Booth- Verfahren sequentielle Multiplikation Multiplik. Bits neg. Zweierkompl. 00 P =P 01 P =P −B 10 P =P +B 11 P =P Multiplik. Bits 00 01 10 11 Zweierkomplement P =P P =P +B P =P −B P =P Bemerkung laufende Folge von Nullen Ende einer Folge von Einsen Anfang einer Folge von Einsen laufende Folge von Einsen Bemerkung laufende Folge von Nullen Ende einer Folge von Einsen Anfang einer Folge von Einsen laufende Folge von Einsen 14 / 21 Das negative Zweierkomplementsystem Multiplikation - Booth- Verfahren Beispiel: A ∗ B = 1.0110 → 1.0110 → 1.0110 → 1.0119 → 3 4 ∗ 5 8 = 1.010 ∗ 1.0110 Addieren und Shift No-OP und Shift Subtrahieren und Shift Addieren (und Shift) Initialisierung P = 0 10: ADD A Shift P 11: No-OP Shift P 01: SUB A Shift P 10: ADD A No-Shift 0.000 1.010 1.010 1.1010 1.1010 1.11010 0.110 0.10010 0.010010 1.010 1.100010 15 / 21 Das negative Zweierkomplementsystem Multiplikation - Baugh- Wooly- Verfahren mithilfe von CSAs (Carry-Skip-Addierern) simultan Teilprodukte erzeugen und akkumulieren Zweierkomplement Baugh- Wooly- Multiplizierer × A5 B5 P10 −A5 B4 −A4 B5 P9 −A5 B3 A4 B4 −A3 B5 P8 −A5 B2 A4 B3 A3 B4 −A2 B5 P7 −A5 B1 A4 B2 A3 B3 A2 B4 −A1 B5 P6 −A5 −B5 −A5 B0 A4 B1 A3 B2 A2 B3 A1 B4 −A0 B5 P5 A4 B4 A4 B0 A3 B1 A2 B2 A1 B3 A0 B4 A3 B3 A3 B0 A2 B1 A1 B2 A0 B3 A2 B2 A2 B0 A1 B1 A0 B2 A1 B1 A1 B0 A0 B1 A0 B0 A0 B0 P4 P3 P2 P1 P0 A4 B4 −A4 B0 −A3 B1 −A2 B2 −A1 B3 −A0 B4 A3 B3 −A3 B0 −A2 B1 −A1 B2 −A0 B3 A2 B2 −A2 B0 −A1 B1 −A0 B2 A1 B1 −A1 B0 −A0 B1 A0 B0 −A0 B0 P4 P3 P2 P1 P0 Negatives Zweierkomplement Baugh- Wooly- Multiplizierer × −A5 B5 P10 A5 B4 A4 B5 P9 A5 B3 −A4 B4 A3 B5 P8 A5 B2 −A4 B3 −A3 B4 A2 B5 P7 A5 B1 −A4 B2 −A3 B3 −A2 B4 A1 B5 P6 −A5 −B5 A5 B0 −A4 B1 −A3 B2 −A2 B3 −A1 B4 A0 B5 P5 16 / 21 Das negative Zweierkomplementsystem Multiplikation - Baugh- Wooly- Verfahren 17 / 21 Das negative Zweierkomplementsystem Multiplikationen - Rundungen häufig notwendig aus 2n Bit Zahl eine n Bit Zahl zu machen n-1 niederwertigsten Bits abschneiden allgemeiner Fall n Bit Zahl (A) wird abgeschnitten → m Bit Zahl (B) entsteht n−2 A = an−1 − ∑ ai 2i−n+1 i=0 n−2 B = bn−1 − ∑ bi 2i−n+1 i=n−m wobei bk = ak für n − 1 ≥ k ≥ n − m Differenz zwischen A und B ist ∆: n−m−1 ∆ = − ∑ ai 2i−n+1 i=0 Der Wertebereich von ∆ liegt zwischen 0 und Ω, wobei: n−m−1 Ω = − ∑ 2i−n+1 i=0 18 / 21 Das negative Zweierkomplementsystem Multiplikationen - Rundungen Somit ist Ω = 2−n+1 − 2−m+1 wenn Werte von ∆ einheitlich verteilt sind → durchschnittliche Veränderung durch Runden, ∆avg , halb so groß wie der Wert von Ω: ∆avg = 2−n − 2−m Division “digit recurrent dividers” Vergleich gefolgt von einer Addition und einem Shift Subtraktion gefolgt von einem Shift oder nur eine Shift Operation 19 / 21 Zusammenfassung Zusammenfassung in Bildverarbeitung nun möglich Zahl 1 darzustellen Nachteil: da konventionelle System nur gespiegelt ist, kann Zahl -1 nicht mehr dargestellt werden Lösungsmöglichkeit: Konvertierung der Zahlen wenn 1 oder -1 benötigt werden 20 / 21 Quellenangaben Quellen Swartzlander, E.: The Negative Two’s Complement Number System. Austin 2007 Prof. Dr. Zehendner, E.: Rechnerarithmetik. Jena 2008 http://wapedia.mobi/de/Zweierkomplement 21 / 21