2012-11-04 49 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运营商没有这个概念,并在单个位上工作。结果将以任何方式相同。

相关问题