電腦算術
不使用乘法指令,而以位移與加法將整數 x 乘以10的算式,下列何者正確?
- A(x << 3) + (x << 1)
- B(x << 10)
- C(x << 2) + x
查看答案與解析
正確答案:A. (x << 3) + (x << 1)
向左移1位元會變成2倍,因此 x << 3 為8倍,x << 1 為2倍。8x + 2x = 10x,所以 (x << 3) + (x << 1) 即可計算出10倍。乘以常數的乘法可以像這樣置換為位移與加法的組合,編譯器也會選用較快的一方。x << 10 為 2¹⁰ = 1024倍,(x << 2) + x 為 4x + x = 5倍。須注意不要把位移的位元數誤認為10倍。
- A. 正確。8x + 2x = 10x。
- B. x << 10 為1024倍。
- C. (x << 2) + x 為5倍。