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?

¿Fue útil?

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
scroll top