電腦算術
將8位元有號整數 −8(1111 1000)以算術右移向右移1位元的結果為下列何者?
- A124(0111 1100)
- B−16(1111 0000)
- C−4(1111 1100)
查看答案與解析
正確答案:C. −4(1111 1100)
在算術位移(算術右移)中,空出來的最高位元會複製符號位元,因此 1111 1000 會變成 1111 1100,以二補數而言就是 −4。即使是負數,向右移1位元也會成為除以2的值。若是在最高位填入0的邏輯右移,則會成為 0111 1100 = 124,符號就改變了。−16則是向左移1位元的結果。另須注意,在C語言中將有號整數右移時會是哪一種,過去是交由編譯系統(實作)決定的。
- A. 124是填入0的邏輯右移的結果。
- B. −16是向左移1位元的結果。
- C. 正確。複製符號位元,得到 1111 1100 = −4。