Difference between signed and unsigned on bitwise operations

☆樱花仙子☆ 提交于 2019-11-26 17:08:06

问题


Is there any difference between signed and unsigned variables on bitwise operations?
For example,when dealing with unsigned numbers:
AND 00000111, 00001101
will result 00000101.

But what would happen when dealing with signed numbers?


回答1:


Assuming 2's complement is used for signed numbers, operations that care about signedness (ie they are different for the signed and unsigned interpretation of a bitstring) are:

  • division
  • modulo
  • right shift
  • comparisons (except equality)
  • double-width multiplication (rare outside of assembly)

Operations for which signedness is irrelevant are:

  • addition
  • subtraction
  • negation (-x means ~x + 1)
  • bitwise and
  • bitwise or
  • bitwise xor
  • bitwise not (~x means -x - 1)
  • left shift
  • multiplication
  • comparison (equality only)



回答2:


Unsigned and signed numbers are an interpretation of a bitstring. The AND operator doesn't have that notion and works on the single bits. The result will be the same in any way.



来源:https://stackoverflow.com/questions/13224273/difference-between-signed-and-unsigned-on-bitwise-operations

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!