電腦算術

將8位元有號整數 −8(1111 1000)以算術右移向右移1位元的結果為下列何者?

  1. A124(0111 1100)
  2. B−16(1111 0000)
  3. 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。
練習這個領域 前往領域頁面

電腦算術的其他題目

  1. 在C語言中,int型的 −7 / 2 與 −7 >> 1(算術右移的情況)的結果,下列何者組合正確?
  2. 在C語言中,32位元無號整數(unsigned int)的 0 減去 1 的結果為下列何者?
  3. 在無號整數彼此的加法中,判定結果超過可表示範圍(位數溢出)的方法,下列何者正確?
  4. 關於浮點數中相鄰可表示值之間的間隔,下列說明何者正確?
  5. 在IEEE 754的單精度浮點數中,從0開始能準確表示所有整數的上限為下列何者?