Como produzir máscaras de 64 bits?
Pergunta
Com base no seguinte programa simples, o operador de mudança de esquerda bit -bit funciona apenas para 32 bits. É verdade?
#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;
}
A saída do programa:
Enter input:
30
536870912
536870912
Enter input:
62
536870912
536870912
Como eu poderia produzir máscaras de 64 bits?
Solução
Faça a entrada também uma longa e use 1ll << (entrada - 1ll). Aqui, seu turno é calculado em 32 bits e convertido em 64 bits quando armazenado no currentFictyPeValuedEC.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow