Frage

Ich muss drei Bit-Masken erstellen, die in drei 32-Bit-unsigned intss 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?

War es hilfreich?

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