電腦算術

不使用乘法指令,而以位移與加法將整數 x 乘以10的算式,下列何者正確?

  1. A(x << 3) + (x << 1)
  2. B(x << 10)
  3. 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倍。
練習這個領域 前往領域頁面

電腦算術的其他題目

  1. 一般的整數除法器(逐位元求商的恢復型、非恢復型等)比乘法器更容易變慢,其理由下列何者正確?
  2. 將8位元有號整數 −8(1111 1000)以算術右移向右移1位元的結果為下列何者?
  3. 在C語言中,int型的 −7 / 2 與 −7 >> 1(算術右移的情況)的結果,下列何者組合正確?
  4. 在C語言中,32位元無號整數(unsigned int)的 0 減去 1 的結果為下列何者?
  5. 在無號整數彼此的加法中,判定結果超過可表示範圍(位數溢出)的方法,下列何者正確?