Um es für BlackDevil noch etwas weiter zu führen:...ist aber rein arithmetisch und deshalb davon abhängig, welches Bit gesetzt ist. Allerdings kannst Du das Ergebnis immer dann als "wahr" betrachten, wenn es nicht NULL ist und immer als "falsch", wenn es NULL ist. Vom Compiler darfst Du erwarten, dass er Dir eine "1" zurückgibt, wenn Du ein wahres Ergebnis eines Vergleichs einer arithmetischen Variablen zuweist.
Wenn du in einer Variablen mit 0 oder 1 festhalten willst, ob ein bestimmtes Bit gesetzt ist, bringe einfach eine zusätzliche logische Operation ins Spiel. Du kannst es z.B. so machen:
BitIsSet = (Reg & (1<<Bit)) > 0;
In diesem Fall ist BitIsSet bei gesetztem Bit immer 1, egal an welcher Position das Bit denn nun genau ist.
Lesezeichen