Сдвиг 1001 определенного значения дает результат, отличный от ожидаемого - PullRequest
0 голосов
/ 26 августа 2018

Я делаю следующее.Я хотел бы сдвинуть 1001 влево

int a = 0;
a = (1001 << 2);
std::cout << a; //Gives 4004

Я ожидал, что он будет в двоичном 100100, что составляет 36. Почему я получаю 0000111110100100?

1 Ответ

0 голосов
/ 26 августа 2018

1001 - десятичная константа.Все целочисленные литералы являются десятичными, если нет соответствующего префикса.Если вы хотите получить двоичную константу, добавьте к ней префикс 0b (доступен только после C ++ 14).

a = (0b1001 << 2);

В противном случае шестнадцатеричная система является достойной альтернативой:

a = (0x9 << 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...