電腦算術

在C語言中,int型的 −7 / 2 與 −7 >> 1(算術右移的情況)的結果,下列何者組合正確?

  1. A−7 / 2 為 −3,−7 >> 1 為 −4
  2. B兩者皆為 −4
  3. C−7 / 2 為 −4,−7 >> 1 為 −3
查看答案與解析

正確答案:A. −7 / 2 為 −3,−7 >> 1 為 −4

C語言(C99以後)的整數除法,規定結果向0的方向捨去,因此 −3.5 會成為 −3。另一方面,算術右移的作用是向較小的方向(負無限大的方向)捨去,將 −7(1111 1001)向右移1位元後為 1111 1100 = −4。因此對負數而言,位移與除法並不一致。編譯器在將除以2置換為位移時,會加上處理負數用的修正指令。若是正數,兩者則會一致。

  • A. 正確。除法向0的方向捨去,位移向較小的方向捨去。
  • B. 除法是向0的方向捨去,因此為 −3。
  • C. 組合顛倒了。
練習這個領域 前往領域頁面

電腦算術的其他題目

  1. 在C語言中,32位元無號整數(unsigned int)的 0 減去 1 的結果為下列何者?
  2. 在無號整數彼此的加法中,判定結果超過可表示範圍(位數溢出)的方法,下列何者正確?
  3. 關於浮點數中相鄰可表示值之間的間隔,下列說明何者正確?
  4. 在IEEE 754的單精度浮點數中,從0開始能準確表示所有整數的上限為下列何者?
  5. 在金額的計算中,多半不使用二進位浮點數,而是以最小單位(1圓或1分)為1的整數來處理,其主要理由為下列何者?