Tabelle 1: Die schriftliche Multiplikation | |||||||||
Es wird das Produkt '317 * 201' berechnet: | |||||||||
Im Dezimalsystem 317*201 | Im Binärsystem 100111101 * 11001001 | ||||||||
| 1001111010000000 100111101000000 00000000000000 0000000000000 100111101000 00000000000 0000000000 + 100111101 ---------------- 1111100011100101 ----------------- | ||||||||
Algorithmus: | |||||||||
1. Variante ohne Verwendung von MUL-Befehlen der CPU | |||||||||
Ergebnis = 0 für i = 23 bis 0 teste Bit-Nr. <i> des zweiten Faktors falls 'Bit gesetzt' dann addiere ersten Faktor zum Ergebnis verschiebe ersten Faktor um 1 Bit nach rechts nächstes iWobei 'Ergebnis' eine Hilfsvariable mit 48-Bit Länge und die Addition eine 48-Bit Addition ist. | |||||||||
2. Variante (Verwendung von MUL-Befehlen der CPU) | |||||||||
Voraussetzung: Die Operanden liegen in folgender Form vor:
0000 0000 ffff ffff ffff ffff ffff ffff (also auf 32 Bit erweitert mit führenden Nullen)
(Ergebnis:
(Ergebnis:
(Ergebnis:
(Ergebnis:
+ ffff ffff ffff ffff gggg gggg gggg gggg gggg gggg gggg gggg
| |||||||||
= ffff ffff ffff ffff ffff ffff ffff ffff gggg gggg gggg gggg
| |||||||||
Liegen als Eingangswerte zwei normalisierte Faktoren vor - also mit führender Eins - so ist spätestens das zweite Bit von links eine Eins.
Da (von links gezählt) damit maximal 26 Bit benötigt werden, sind speziell die unteren 16 Bit - hier mit 'g' gekennzeichnet - überflüssig.
Dies gilt allerdings nicht für denormalisierte Zahlen.
Einzig aus diesem Grund benötigen wir auch diese Stellen.
Bei der Addition der Zwischenergebnisse kann übrigens kein Überlauf auftreten, denn es ist gewährleistet, daß das Produkt zweier 24-Bit-Zahlen insgesamt höchstens 48 Bit ausfüllt. | |||||||||
Scanned by
Werner Cirsovius
September 2004
© Franzis' Verlag