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?
Gast
#2336084
Einfach... pseudo: if ((maske & daten) == maske) ausgang=1; else ausgang=0;
1 | |
2 | |
3 | |
4 | |
Peter
Gast
#2336090
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
Gast
#2336091
oh Zu spät :-)
Vor den Kopf klatsch - Danke :-)
Und als 3.te Lösung
1 | |
2 | |
3 | |
4 | |
Karl Heinz Buchegger schrieb: > Und als 3.te Lösung > >
1 | |
2 | |
3 | |
4 | |
5 | |
Nö. Peter
Ich wusste, dass es einfach ist - manchmal steht man sich selbst im Weg :-)
Peter Dannegger schrieb: > Karl Heinz Buchegger schrieb: >> Und als 3.te Lösung >> >>
1 | |
2 | |
3 | |
4 | |
5 | |
> > Nö. > > Peter Ach Mist. Ich hab nur auf die 1 Bits geschaut und nicht bedacht, dass ja auch die 0-Bit umgedreht werden.
Gast
#2336261
Oder etwas weniger leicht zu lesen aber kompakter: val = (~val & mask) ? 0 : 1;
Geht noch kürzer:
1 | |
Peter
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.