Question

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?

Was it helpful?

Solution

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)

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top