bitmask

hallo liebe community,

ich habe folgendes problem:

Beispiel:
Code:
int a = 8191; // 1+2+4+8+16+32+64+128+256+512+1024+2048+4096
wie bekomm ich anhand der zahl 8191 nun heraus ob zum beispiel die zahl 64 drin ist?
 
wandel das Ding in ne Binärzahl um und schau nach, ob an der 7ten Stelle ne 1 steht?
 
Umwandeln musst du da nix, die Zahl wird "intern" sowieso binär repräsentiert.
Du musst lediglich die Zahl mit einer Bitmaske, die genau 64 ist, AND-verknüpfen, und dann testen, ob das Ergebnis ungleich 0 ist (bzw. größer, gleich 64, was auch immer). Ist das Ergebnis gleich 0, dann ist die 64 nicht enthalten (also das 7. Bit = 0).

/edit: Doch mal bissl Code,,
Code:
int foo = 8191;
int mask = 64;
int foo_and_mask = foo & mask;
foo_and_mask hat jetzt 2 mögliche Werte, entweder 64, wenn foo (hier: 8191) die 64 enthält, oder 0, wenn es 64 nicht enthält.
 
Zurück
Oben