Computerarithmetik
Welcher Ausdruck berechnet die Multiplikation einer Ganzzahl x mit 10 mit Verschiebungen und Additionen ohne Multiplikationsbefehl?
- A(x << 3) + (x << 1)
- B(x << 10)
- C(x << 2) + x
Antwort und Erläuterung anzeigen
Antwort: A. (x << 3) + (x << 1)
Eine Verschiebung um 1 Bit nach links verdoppelt, also ist x << 3 das 8-Fache und x << 1 das 2-Fache. 8x + 2x = 10x, daher berechnet (x << 3) + (x << 1) das 10-Fache. Die Multiplikation mit einer Konstanten lässt sich so durch Kombinationen aus Verschiebungen und Additionen ersetzen, und auch Compiler wählen die schnellere Variante. x << 10 ergibt das 2¹⁰ = 1024-Fache, (x << 2) + x ergibt 4x + x = das 5-Fache. Es ist darauf zu achten, die Verschiebungsweite nicht mit dem Faktor 10 zu verwechseln.