2012-11-04 53 views
2

位運算上的有符號和無符號變量之間是否有區別?
例如,對於無符號數打交道時:
AND 00000111, 00001101
將導致00000101.按位運算上的有符號和無符號之間的區別

但隨着符號數打交道時,會發生什麼?

+1

[哪個算術運算是無符號相同,兩個互補的有符號數?(http://stackoverflow.com/q/21475286/995714) –

回答

8

假設2的補數被用於該關心的符號性符號數,操作(即它們是一個比特串的符號和無符號解釋不同)是:

  • 權移位
  • 比較(除了相等)
  • 雙倍寬度(罕見的組件外)

操作爲哪些符號性是無關緊要的是:

  • 此外
  • 減法
  • 否定(-x裝置~x + 1
  • 按位和
  • 按位或
  • 按位異或
  • 按位不( ~x意味着-x - 1
  • 左移
  • 乘法
  • 比較(平等只)
+1

你能舉一個例子,說明右移運算符在有符號和無符號之間的區別嗎? – Lior

+1

@ user1718294簽名右移保留符號,無符號右移將最高位置零。所以'-1 >> 1 = -1'(帶符號)和'0xFFFFU >> 1 = 0x7FFF'(無符號)。 – harold

+0

欲瞭解更多信息,請參閱http://stackoverflow.com/a/2244410/1558890 –

1

無符號和有符號數是位串的解釋。 AND運營商沒有這個概念,並在單個位上工作。結果將以任何方式相同。

相關問題