如何制作64位掩码?

时间:2010-03-16 09:26:27

标签: c++ 64-bit bit-shift bitmask

基于以下简单程序,按位左移运算符仅适用于32位。这是真的吗?

#include <iostream>
#include <stdlib.h>

using namespace std;


    int main(void)
    {
        long long currentTrafficTypeValueDec;
        int input;
        cout << "Enter input:" << endl;
        cin >> input;
        currentTrafficTypeValueDec = 1 << (input - 1); 
        cout << currentTrafficTypeValueDec << endl;
        cout << (1 << (input - 1)) << endl;

        return 0;

    }

该计划的输出:

Enter input:
30
536870912
536870912

Enter input:
62
536870912
536870912

我怎样才能生成64位掩码?

1 个答案:

答案 0 :(得分:6)

输入也很长,并使用1LL&lt;&lt; (输入 - 1LL)。这里你的移位是在32位上计算的,当存储在currentTrafficTypeValueDec中时转换为64位。