¿Cómo producir 64 máscaras de bits?
Pregunta
Con base en lo siguiente programa simple de la izquierda en modo bit operador de desplazamiento sólo funciona para 32 bits. ¿Es cierto?
#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;
}
La salida del programa:
Enter input:
30
536870912
536870912
Enter input:
62
536870912
536870912
¿Cómo podría producir máscaras de 64 bits?
Solución
Hacer entrada de un largo tiempo también, y utilizar 1LL << (entrada - 1LL). Aquí su desplazamiento se calcula en 32 bits, y se convierte a 64 bits cuando se almacena en currentTrafficTypeValueDec.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow