按位运算的有符号和无符号之间的差异

时间:2012-11-04 23:57:54

标签: bit-manipulation bitwise-operators unsigned signed

按位运算的有符号和无符号变量之间有什么区别吗?
例如,在处理无符号数时:
AND 00000111, 00001101
将导致00000101。

但处理签名号码会发生什么?

2 个答案:

答案 0 :(得分:10)

假设2的补码用于有符号数,那么关心有符号的操作(即对于位串的有符号和无符号解释它们是不同的)是:

  • 右移
  • 比较(平等除外)
  • 双倍乘法(在装配之外罕见)

签名无关的操作是:

  • 除了
  • 减法
  • 否定(-x表示~x + 1
  • 按位和
  • 按位或
  • bitwise xor
  • 按位不是(~x表示-x - 1
  • 左移
  • 乘法
  • 比较(仅限相等)

答案 1 :(得分:1)

无符号和带符号的数字是位串的解释。 AND运算符没有这个概念并且对单个位有效。结果将以任何方式相同。