電腦算術
在C語言中,int型的 −7 / 2 與 −7 >> 1(算術右移的情況)的結果,下列何者組合正確?
- A−7 / 2 為 −3,−7 >> 1 為 −4
- B兩者皆為 −4
- 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. 組合顛倒了。