01a.Das negative Zweierkomplementzahlensystem.Junold

Werbung
Das negative
Zweierkomplementzahlensystem
Ines Junold
23. Februar 2010
1
Inhaltsverzeichnis
1 Einleitung
3
2 Das
2.1
2.2
2.3
konventionelle Zweierkomplement
Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Addition und Subtraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiplikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
4
3 Das
3.1
3.2
3.3
negative Zweierkomplementsystem
Definition . . . . . . . . . . . . . . . . .
Addition und Subtraktion . . . . . . . .
Multiplikation . . . . . . . . . . . . . . .
3.3.1 Booth-Verfahren . . . . . . . . .
3.3.2 Baugh-Wooly-Verfahren . . . .
5
5
5
6
6
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Zusammenfassung
10
5 Literaturverzeichnis
11
2
1 Einleitung
Das Zweierkomplement wird bei gebrochenen Festkommazahlen zur Implementierung der
digitalen Signalverarbeitung auf VLSI-Chips verwendet. Allerdings wird bei der digitalen
Signalverarbeitung häufig der Wert 1 benötigt. Das Problem hierbei ist jedoch, dass im
konventionellen Zweierkomplement diese Zahl nicht dargestellt werden kann. Dies führt
zu dem Problem, dass −1 × −1 das Resultat +1 ergibt, welches nicht als gebrochene Zweierkomplementzahl dargestellt werden kann. Es bedeutet auch, dass der Absolutwert von
−1 nicht dargestellt werden kann.
Aus diesem Grund entwickelte Swartzlander (vgl. Swartzlander 2007) das sogenannte negative Zweierkomplement (Abb. 1). Seit 1990 unterrichtet er an der Universität von Texas
in Austin als Professor für Elektrotechnik und Computer Engineering. Er besitzt einen
Abschluss in Elektrotechnik an der Purdue Universität, der Universität von Colorado und
der Universität von Kalifornien. Bei seiner Forschung liegt der Schwerpunkt auf einem
anwendungsspezifischen Prozessordesign mit einer Hochgeschwindigkeitscomputerarithmetik.1
Abbildung 1: Earl E. Swartzlander, jr.
1
vgl.http://www.reviews.com/masthead/masthead_editors.cfm?editor=swartz
3
2 Das konventionelle Zweierkomplement
2.1 Definition
Durch das konventionelle Zweierkomplement besteht die Möglichkeit, auch negative Zahlen im Dualsystem darstellen zu können. Der Wertebereich liegt in −(2n−1 ), ..., 0, ..., 2n−1 −1,
wobei n der Anzahl der Bits entspricht. Stehen beispielsweise 8 Bit zur Verfügung, dann
erstreckt sich der Zahlenbereich von −128(10) bis +127(10) .
Darstellung und Umwandlung der Binärzahlen in das konventionelle Zweierkomplement
sind sehr einfach zu implementieren. Zuerst muss ein Vorzeichenbit festgelegt werden.
Handelt es sich bei der umzuwandelnden Zahl x um eine positive, so wird das Vorzeichenbit auf 0 gesetzt. Ist es jedoch negativ, also x < 0, so werden alle Bits invertiert bzw.
gekippt. Danach muss nur noch der Wert der Quantisierungsstufe 2k addiert werden. Die
Quantisierungsstufe wird auch als Least Significant Bit (LSB) bezeichnet.
Am Beispiel der Zahl −2.2510 wird die Umwandlung nun gezeigt.
2.2510
¬[010.01]2
2−2 = 0.2510
101.102 + 000.012
=
=
=
=
010.012
101.102
0.012
101.112
Umwandlung vom Dezimal- ins Binärzahlensystem
Invertierung der einzelnen Bitstellen
Berechnung der Quantisierungsstufe
Addieren der Quantisierungsstufe
2.2 Addition und Subtraktion
Bei Addition und Subtraktion muss keine Fallunterscheidung vorgenommen werden, da
die Subtraktion auf die Addition zurückgeführt werden kann.
S = A − B = A + (−B)
Die Summe S = (sn−1 , sn−2 , ..., s0 ) besteht aus den zwei Summanden A = (an−1 , an−2 , ..., a0 )
und B= (bn−1 , bn−2 , ..., b0 ). Somit ergibt sich die folgende Bildungsvorschrift:
s i = ai ⊕ b i ⊕ c i
Die Variable ci bezeichnet den Übertrag an der Stelle i. Die Bildungsvorschrift hierfür
lautet:
ci+1 = (ai ∧ bi ) ∨ (ai ∧ ci ) ∨ (bi ∧ ci ), wobei c0 = 0
Der entsprechende Schaltkreis, ein Volladdierer, ist in Abbildung 2 dargestellt.
2.3 Multiplikation
Im Gegensatz zur Addition und Subtraktion muss bei der Multiplikation eine Erweiterung des Wertebereichs vorgenommen werden, da das Ergebnis meist nicht im Wertebereich der Faktoren liegt. Die Stellenanzahl wird dabei verdoppelt und der Wert des
Most Significant Bit (MSB) entsprechend oft vor den ersten Faktor gesetzt. Somit ist die
neue Stellenanzahl bei einem Faktor mit n Bit Stellen 2n. Hierfür eignet sich ein Serienoder Parallelmultiplizierer. Die Funktionsweise der verschiedenen Multiplizierer wird im
Kapitel 3.2 Rechenoperationen dargestellt.
4
Abbildung 2: Volladdierer
3 Das negative Zweierkomplementsystem
3.1 Definition
Das negative Zweierkomplement ist im Grunde genommen nur eine Spiegelung des bekannten und in Kapitel 2 beschriebenen konventionellen Zweierkomplements. Aus Abbildung
3 geht hervor, dass die Umwandlung ins negative Zweierkomplement über das Invertieren
aller Bits außer dem Vorzeichenbit möglich ist. Die resultierenden Zahlen sind der Größe
nach geordnet (zum Beispiel die Kleinste ist 0000, die Größte 1111 und die Zwischenwerte
sind intuitiv geordnet). Die Schwierigkeit besteht darin, die n − 1 Bits für jede Zahl zu
kippen. Eine Alternative zum Invertieren ist nur das Vorzeichenbit zu invertieren. Dann
sind die Zahlen invers der Größe nach geordnet. Nach dem Vergleich ist das Ergebnis invertiert (zum Beispiel wenn der Vergleich A > B ergibt, ist das korrekte Ergebnis A < B).
Das negative Zweierkomplement einer Zahl kann durch die nachfolgende Formel berechnet
werden.
n−2
R = rn−1 − ∑ ri 2i−n+1
i=0
Die umzuwandelnde, gebrochene n Bit lange Zahl besitzt das Vorzeichenbit rn−1 , wobei
R die gegebene Zahl im negativen Zweierkomplement beschreibt. Dies soll am folgenden
Beispiel gezeigt werden. Die zu berechnende Zahl sei 85 .
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 = 85
3.2 Addition und Subtraktion
Die Rechenoperationen Addition und Subtraktion sind im negativen Zweierkomplement
gleich den Rechenregeln im konventionellen Zweierkomplement. Darum soll ein Beispiel
für die Addition genügen.
5
Abbildung 3: Vergleich vom negativen Zweierkomplement mit dem konventionellen
Zweierkomplement
1
2
+ 83
1.100
+ 1.101
= 1.001
=
7
8
Auch die Subtraktion kann - wie beim konventionellen Zweierkomplement - auf die Addition zurückgeführt werden. Nur muss auch hier der Divisor negiert werden. Dies geschieht
äquivalent zum konventionellen Zweierkomplement am Beispiel von 14 .
0.2510
¬[1.110]2
0.0012 + 0.0012
= 1.1102
= 0.0012
= 0.0102
Umwandlung vom Dezimal- ins Binärzahlensystem
Invertierung der einzelnen Bitstellen
1 am LSB addieren
3.3 Multiplikation
Es gibt zwei Arten von gebräuchlichen Multiplikatoren, die sequenziellen und die parallelen Multiplikatoren. Für beide Versionen kann man die Implementierung im negativen
Zweierkomplement zeigen.
3.3.1 Booth-Verfahren
Die sequenzielle Multiplikation ist im Allgemeinen im Booth-Verfahren (oder im modifizierten Booth-Verfahren) realisiert. Diese werden durch Sequenzen von Additionen,
Subtraktionen und Shift- Operationen verwirklicht. Da bereits äquivalente Operationen
für Addition und Subtraktion gezeigt wurden, ist das negative Zweierkomplement mit
Booth-Verfahren ähnlich dem konventionellen Booth-Verfahren. Der einzige Unterschied
sind die vertauschten Additions- und Subtraktionsoperationen.
6
Multiplikator Bits
00
01
10
11
konventionelle Zweierkomplement Bemerkung
P =P
laufende Folge von Nullen
P =P +B
Ende einer Folge von Einsen
P =P −B
Anfang einer Folge von Einsen
P =P
laufende Folge von Einsen
Operationen des Booth-Verfahrens im konventionellen Zweierkomplement
Multiplikator Bits negative Zweierkomplement Bemerkung
00
P =P
laufende Folge von Nullen
01
P =P −B
Ende einer Folge von Einsen
10
P =P +B
Anfang einer Folge von Einsen
11
P =P
laufende Folge von Einsen
Operationen des Booth-Verfahrens im negativen Zweierkomplement
Dies wird am folgenden Beispiel deutlich. Zunächst werden die Operationen anhand der
Zweiersequenzen bestimmt:
A ∗ B = 34 ∗ 85 = 1.010 ∗ 1.0110
1.0110 → Addieren und Shift
1.0110 → No-OP und Shift
1.0110 → Subtrahieren und Shift
1.0110 → Addieren (und Shift)
Danach müssen die einzelnen Arbeitsschritte des Multiplikators betrachtet werden. Mit
Hilfe der einzelnen Additions-, Subtraktions- und Shift-Operationen wird aus dem Multiplikand und dem Multiplikator das Produkt errechnet:
Initialisierung P = 0 0.000
10: ADD A
1.010
1.010
Shift P
1.1010
11: No-OP
1.1010
Shift P
1.11010
01: SUB A
0.110
0.10010
Shift P
0.010010
10: ADD A
1.010
No-Shift
1.100010
Dies soll als Nachweis der sequentiellen Multiplikation im negativen Zweierkomplements
genügen.
7
3.3.2 Baugh-Wooly-Verfahren
Die parallelen Multiplizierer hingegen werden durch eine die modifizierte Variante des
Baugh-Wooly-Verfahrens. Es werden dabei Regeln zur Vereinfachung des Multiplikationsschemas angewandt2 . Daraus ergibt sich folgendes Bild:
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
Änlich wie bei den Seriellen Multiplizierern wird die Umwandlung in das negative Zweierkomplement nur durch eine Vertauschung der Vorzeichen erreicht. Der daraus resultierende Multiplizier sieht dann folgendermaßen aus:
Negatives Zweierkomplement Baugh- Wooly- Multiplizierer
×
−A5 B5
P10
2
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
vgl.
http://www2.informatik.uni-jena.de/~nez/rechnerarithmetik_5/Folien/
Rechnerarithmetik.2008.16.handout.pdf S. 18ff.
8
Anhand eines 4 Bit Multiplizierers kann man die Funktionalität verdeutlichen:
3
4
5
8
15
32
≡
≡
=
1. 0 1
×
1. 0 1
1. 1 0
1. 1 0 1
0. 1 1 1
0. 0 1 0.
1 1 1
1. 1 0 0 0 1
0
1
1
1
0
4 Zusammenfassung
Im Kapitel »Einleitung« wurde beschrieben, dass besonders in der digitalen Signalverarbeitung der Wert 1 benötigt wird. Swartzlander (vgl. Swartzlander 2007) stellt diese Zahl
durch sein negatives Zweierkomplement zur Verfügung, jedoch ist in diesem Zahlensystem
der Wert −1 nicht verfügbar. Dies würde bedeuten, dass jedes Mal, wenn in einer Rechnung
der Wert 1 oder −1 benötigt wird, die erforderlichen Zahlen in das jeweilige Zahlensystem
umgewandelt werden müssen. Und somit ist das negative Zweierkomplement nur dann
sinnvoll, wenn die 1 häufiger benötigt wird als die −1.
9
5 Literaturverzeichnis
1. Swartzlander, E.: The Negative Two?s Complement Number System. Austin 2007
2. Zehendner, E.: Rechnerarithmetik. Jena 2008
3. http://wapedia.mobi/de/Zweierkomplement
10
Herunterladen