Wie 64-Bit-Masken zu produzieren?
Frage
Auf der Grundlage der folgenden einfachen Programm die bitweise Verschiebung nach links Betreiber nur für 32 Bit arbeitet. Ist es wahr?
#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;
}
Die Ausgabe des Programms:
Enter input:
30
536870912
536870912
Enter input:
62
536870912
536870912
Wie kann ich produzieren 64-Bit-Masken?
Lösung
Jetzt Eingang eine lange, lange zu, und die Verwendung 1LL- << (Eingang - 1LL-). Hier Ihre Verschiebung wird berechnet auf 32 Bit und 64 Bit umgewandelt, wenn in currentTrafficTypeValueDec gespeichert.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow