Задать вопрос
EgoRusMarch
@EgoRusMarch
C++ Developer

Почему в битовых сдвигах остаётся минус?

Вот такой код:
int a=-7;
a<<=1;
a>>=1; 
printf("%d\n",a);

Двоичное представление -7 (если я правильно понял знак хранится в первом бите):
10000111

Если сделать сдвиг влево, то должно получится:
00001110

Затем сдвиг вправо:
00000111

Что в двоичном представлении равно 7. Но у меня как было -7, так и осталось.
  • Вопрос задан
  • 558 просмотров
Подписаться 3 Оценить 1 комментарий
Ответ пользователя wrench10x12 К ответам на вопрос (6)
@wrench10x12
Двоичное представление -7 вообще-то 11111001 * **
*если не принимать во внимание экзотические архитектуры
**если полагать, что int, внезапно, стал однобайтовым
Ответ написан