C programme bitwise: value of -1 >> 1

bit-manipulation, c

Solution

Under most implementations, that operator does an `arithmetic shift` for signed types, so it preserves the `sign` bit (which is the leftmost bit), in this case `1`.

As @Clifford correctly pointed out, the language standard leaves the implementation of `>>` up to the implementor.

See the Wikipedia article for details.

Problem

For GCC 32 bits, -1 >> 1 returns me FFFFFFFF, but I thought after 2's complement, I will get 0111 1111 ... 1111 which should be 7fff ffff. did i miss something?

Original source

Related problems