基于以下简单程序,按位左移运算符仅适用于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位掩码?
答案 0 :(得分:6)
输入也很长,并使用1LL&lt;&lt; (输入 - 1LL)。这里你的移位是在32位上计算的,当存储在currentTrafficTypeValueDec中时转换为64位。