質問

ビット単位の左シフト演算は、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ビットに変換されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top