Hallo, ich hab schon viel gelernt hier im Forum. Aber jetzt hab ich ein neues Problem. In einem Byte muss ich mittels der if-Anweisung den Zustand der beiden Bits 4 und 5 testen. 1.Fall: Das Ergebniss ist Wahr, wenn beide Bits 'L' sind, 2.Fall: Das Ergebniss ist Wahr, wenn beide Bits 'H' sind. In Codevision habe ich folgendes versucht, für 'H' Test: if ((byte & (1<<4)) && (byte & (1<<5)))
Mist, aus Versehen Return gedrückt... für 'L' Test: if (!(byte & (1<<4)) && !(byte & (1<<5))) Beide Varianten arbeiten aber nicht so wie sie sollen. Was mache ich da falsch? Norbert
sry hab da grad was übersehen in deinen angaben: if( !(BYTE & 0x30) || ((BYTE & 0x30) == 0x30) ) =>WAHR
0x30, 0b00110000 wäre natürlich auch richtig aber wie gesagt dass müsste passen: if( !(BYTE & 0x30) || ((BYTE & 0x30) == 0x30) )
Hallo,
@mathias
> if (!(BYTE & 0x30))
für welches "Byte" wird der Ausdruck denn:false ?
er ist immer true!!
Gruß
if (((~Byte & 0x30)==0x30) || ((Byte & 0x30) == 0x30)) ... kann sein, dass das noch verkürzt werden kann.
warum soll dass denn bitte immer true sein?? nimm mal fuer byte 0xAA: dann bekommst du 20 => wegen dem ! is das ganze dann wohl false!!! also: if( !(BYTE & 0x30) || ((BYTE & 0x30) == 0x30) ) !(BYTE & 0x30): nur true wenn beide bits = 0 ((BYTE & 0x30) == 0x30): nur true wenn beide bits = 1 mfg, Mathias
Hallo, auch schön ist :
1 | if (!((BYTE & (1<<4)) ^^ (BYTE & (1<<5)))) |
2 | { bla; } |
So fern man mit den bits eines bytes bei Null zu zählen beginnt. Mit XOR kann man auch schöne Dinge machen. MfG, Daniel.
Hallo, @mathias 1010 1010 0xAA & 0011 0000 0x30 ----------- 0010 0000 ! 0010 0000 ----------- 1101 1111 -> das ist true, oder sehe ich das falsch? Gruß
Hi @Quaks ! ist etwas komplett anderes als ~ @Rahul ^ ist etwas komplett anderes als ^^ Matthias
@ quaks: wie matthias schon gesagt hat: ! ist etwas komplett anderes als ~ !!!!! und meiner meinung nach passt der code ziehmlich sicher
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.