views:

129

answers:

1

Based on the following simple program the bitwise left shit 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?

+5  A: 

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.

Eric Bainville