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?

Foi útil?

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