代码之家  ›  专栏  ›  技术社区  ›  Rajeshwar

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

  •  2
  • Rajeshwar  · 技术社区  · 6 年前

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

    100100 也就是36。 为什么我会 0000111110100100

    1 回复  |  直到 6 年前
        1
  •  3
  •   StoryTeller - Unslander Monica    6 年前

    1001 是十进制常量。除非有相应的前缀,否则所有整数文本都是十进制的。如果要获取二进制常量,请在其前面加上 0b (仅可用于C++ 14)。

    a = (0b1001 << 2);
    

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

    a = (0x9 << 2);