Ich schäme mich ja fast - aber finde keine ordentliche Lösung. (mit ner Menge Ifs gehts natürlich) 2 Variablen, die eine enthält die Maske, die andere aktuellen Daten. Ausgang soll nur dann 1 sein, wenn alle Bits, die in der Maske 1 stehen haben auch 1 sind. Steht in der Maske 0, spielt das Datenbit keine Rolle. 11001100 11xx11xx -> 1 11001100 01xx11xx -> 0 10000000 0xxxxxxx -> 0 Ideen?
Ich würde die Maske und die Daten UND Verknüpfen und das Ergebnis dann mit der Maske vergleichen. if((M & D) == M) so ungefähr Gruß Daniel
Karl Heinz Buchegger schrieb: > Und als 3.te Lösung > >
1 | > if( ~( val & mask ) ) |
2 | > val = 0; |
3 | > else |
4 | > val = 1; |
5 | >
|
Nö. Peter
Peter Dannegger schrieb: > Karl Heinz Buchegger schrieb: >> Und als 3.te Lösung >> >>
1 | >> if( ~( val & mask ) ) |
2 | >> val = 0; |
3 | >> else |
4 | >> val = 1; |
5 | >>
|
> > Nö. > > Peter Ach Mist. Ich hab nur auf die 1 Bits geschaut und nicht bedacht, dass ja auch die 0-Bit umgedreht werden.
Oder etwas weniger leicht zu lesen aber kompakter: val = (~val & mask) ? 0 : 1;
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.