我正在做以下事情。我想向左移动1001
int a = 0;
a = (1001 << 2);
std::cout << a; //Gives 4004
我期望它以二进制100100
的形式出现,即36。
为什么我得到0000111110100100
?
答案 0 :(得分:3)
1001
是一个十进制常数。除非有相应的前缀,否则所有整数文字都是十进制的。如果希望获取二进制常量,请在其前面加上0b
(尽管仅从C ++ 14开始可用)。
a = (0b1001 << 2);
否则,十六进制是一个不错的选择:
a = (0x9 << 2);