Как создать 64-битные маски? - PullRequest
2 голосов
/ 16 марта 2010

Основываясь на следующей простой программе, оператор побитового сдвига влево работает только для 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-битные маски?

1 Ответ

6 голосов
/ 16 марта 2010

Сделайте также ввод long long и используйте 1LL << (input - 1LL). Здесь ваш сдвиг рассчитывается на 32 бита и преобразуется в 64 бита при сохранении в currentTrafficTypeValueDec. </p>

...