long long int mit konstante verknüpfen
-
hallo ich habe so etwas in meinem code, um die 9 unteren bits aus der variable zu entfernen:
settings = gs->selectedsettings & ~0x1FF;settings und selectedsettings sind vom typ long long int, also 64 bit breit. es scheint so zu funktionieren, aber funktioniert das wirklich so, oder sollte ich lieber 0x00000000000001FF verwenden?
-
Das reicht.
0x1FF ist erstmal ein
int. Dieser wird für den &-Operator in einlong long intgewandelt.Zudem brauchst du auch nicht die ganzen Nullen hinschreiben 0x1ffLL ist auch ein
long long(es gehen auch kleine L, nur kann man die schlecht von der 1 unterscheiden l1)Edit: Das mit dem LL-Suffix ist dann wichtig, wenn du die Bits vorher noch verschieben willst.
settings = gs->selectedsettings & ~(0x1FF << 30); // geht nicht, wenn int nur 32 bitsettings = gs->selectedsettings & ~(0x1FFLL << 30); // geht