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ビットのマスクを作り出すことができる方法は?
解決
長い長い、あまりにも入力を行い、1LL <<(入力 - 1LL)を使用します。ここにあなたのシフトが32ビットで計算され、currentTrafficTypeValueDecに格納されているときに64ビットに変換されます。
所属していません StackOverflow