偏移1001某个值会得到与预期不同的结果

时间:2018-08-26 05:34:08

标签: c++ c++11

我正在做以下事情。我想向左移动1001

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

我期望它以二进制100100的形式出现,即36。 为什么我得到0000111110100100

1 个答案:

答案 0 :(得分:3)

1001是一个十进制常数。除非有相应的前缀,否则所有整数文字都是十进制的。如果希望获取二进制常量,请在其前面加上0b(尽管仅从C ++ 14开始可用)。

a = (0b1001 << 2);

否则,十六进制是一个不错的选择:

a = (0x9 << 2);