Я делаю следующее.Я хотел бы сдвинуть 1001 влево
int a = 0; a = (1001 << 2); std::cout << a; //Gives 4004
Я ожидал, что он будет в двоичном 100100, что составляет 36. Почему я получаю 0000111110100100?
100100
0000111110100100
1001 - десятичная константа.Все целочисленные литералы являются десятичными, если нет соответствующего префикса.Если вы хотите получить двоичную константу, добавьте к ней префикс 0b (доступен только после C ++ 14).
1001
0b
a = (0b1001 << 2);
В противном случае шестнадцатеричная система является достойной альтернативой:
a = (0x9 << 2);