问题
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