Я хочу иметь доступ к знаку бит числа в С++. Мой текущий код выглядит примерно так:
int sign bit = number >> 31;
Это работает, давая мне 0
для положительных чисел и -1
для отрицательных чисел. Однако я не вижу, как я получаю -1
для отрицательных чисел: если 12 -
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
то -12 есть
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
и сдвиг его на 31 бит сделает
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
который равен 1, а не -1, так почему я получаю -1, когда меняю его?