如何生成64位掩码?
基于以下简单程序,按位左移运算符仅适用于 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 位掩码?
Based on the following simple program the bitwise left shift operator works only for 32 bits. Is it true?
#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;
}
The output of the program:
Enter input:
30
536870912
536870912
Enter input:
62
536870912
536870912
How could I produce 64-bit masks?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也让输入很长,并使用 1LL << (输入 - 1LL)。这里,您的移位是在 32 位上计算的,并在存储在 currentTrafficTypeValueDec 中时转换为 64 位。
Make input an long long too, and use 1LL << (input - 1LL). Here your shift is computed on 32 bits, and converted to 64 bits when stored in currentTrafficTypeValueDec.