Gibt es eine übersichtliche Möglichkeit, Bitmasken in C zu erstellen?
-
29-10-2019 - |
Frage
Ich muss drei Bit-Masken erstellen, die in drei 32-Bit-unsigned ints
s enden (nennen wir sie x, y und z).Die Masken sollten wie folgt enden:
x: 0000 0001 1111 1111 1111 1111 1111 1111
y: 0000 1110 0000 0000 0000 0000 0000 0000
z: 1111 0000 0000 0000 0000 0000 0000 0000
Bisher habe ich Folgendes:
unsigned int x = (1<<25)-1;
unsigned int y = (~x)&((1<<28)-1);
unsigned int z = (~x)<<3;
Aber es scheint ein bisschen chaotisch.Kann jemand einen präziseren (und lesbareren) Weg finden?
Lösung
Wenn Sie C99 verwenden, verwenden Sie die "neuen" Festbreitenarten: generasacodicetagpre.
oder Sie könnten "hässliche" Oktal verwenden -) generasacodicetagpre.
Andere Tipps
generasacodicetagpre.
ist das für Sie lesbar?
Legen Sie einfach in Ihre nicht signierte Anzahl an, die Sie gewünscht haben (wenn Sie lieber Hexadezimal-Notation verwenden): generasacodicetagpre.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow