Computerarithmetiek
Welke uitdrukking vermenigvuldigt een geheel getal x met 10 met verschuivingen en optellingen, zonder een vermenigvuldigingsinstructie?
- A(x << 3) + (x << 1)
- B(x << 10)
- C(x << 2) + x
Antwoord en toelichting tonen
Antwoord: A. (x << 3) + (x << 1)
Een verschuiving van 1 bit naar links verdubbelt de waarde, dus x << 3 is 8 keer en x << 1 is 2 keer. 8x + 2x = 10x, dus (x << 3) + (x << 1) berekent de vermenigvuldiging met 10. Vermenigvuldigen met een constante kan zo worden vervangen door een combinatie van verschuivingen en optellingen, en ook compilers kiezen de snelste variant. x << 10 is een vermenigvuldiging met 2¹⁰ = 1024 en (x << 2) + x is 4x + x = 5 keer. Let op dat het aantal verschuivingsbits niet wordt verward met de factor 10.