Hallo, ich habe folgendes Problem: Ich möchte prüfen, ob nur bit 4 oder 5 besetzt wurde. => 0x08, 0x10 Wie kann dies in python für einen Test umgesetzt werden?
1 | value = 0x04 |
2 | (value & (1<<2)) != 0 # check bit 3 |
|
Forum: PC-Programmierung python: check bits![]() Hallo, ich habe folgendes Problem: Ich möchte prüfen, ob nur bit 4 oder 5 besetzt wurde. => 0x08, 0x10 Wie kann dies in python für einen Test umgesetzt werden?
:
Bearbeitet durch User
def is_bit_set(byte, bit_position): return (byte & (1 << bit_position)) != 0 # Test byte_value = 0b10101010 bit_position_to_check = 3 if is_bit_set(byte_value, bit_position_to_check): print(f"Das Bit an Position {bit_position_to_check} im Byte {byte_value:b} ist gesetzt.") else: print(f"Das Bit an Position {bit_position_to_check} im Byte {byte_value:b} ist nicht gesetzt.") Zo R. schrieb: > Ich möchte prüfen, ob nur bit 4 oder 5 besetzt wurde. Bit 4 oder Bit 5 oder beide? Oder nur beide zusammen? Und die anderen Bits == 0 sind? Oder ist deren Zustand egal? :
Bearbeitet durch User
Zo R. schrieb: > Und die Kompination mit zwei bits? Wenn die Maske von Bit 4 0x80 ist, und die Maske von Bit 5 0x10, dann ist die gemeinsame Maske 0x18:
Nach diesem Stück Quellcode steht in result 0x00, 0x08, 0x10 oder 0x18, je nachdem wie die beiden Bits in value gesetzt waren. LG, Sebastian Zo R. schrieb: > Bit 4 oder Bit 5 und Bit 4 und Bit 5. Falls das ein logischer Audruck sein soll: Was bringt es, Bit 5 mit sich selbst zu verUNDen? Bit4 || (Bit5 && Bit4 && Bit5) Oder ist das Umgangssprache, und Du meinst was ganz anderes? Ist "oder" ein umgangssprachliches oder logisches Oder? Sebastian W. schrieb: > die Maske von Bit 4 0x80 ist, und Typo, soll heißen "die Maske von Bit 4 0x08 ist, und" ... LG, Sebastian Sebastian W. schrieb: > Zo R. schrieb: >> Und die Kompination mit zwei bits? > > Wenn die Maske von Bit 4 0x80 ist, und die Maske von Bit 5 0x10, dann > ist die gemeinsame Maske 0x18: > >
> > Nach diesem Stück Quellcode steht in result 0x00, 0x08, 0x10 oder 0x18, > je nachdem wie die beiden Bits in value gesetzt waren. > > LG, Sebastian Vielen Dank das ist es. Wenn du ein True/False Ergebnis erwartest:
Norbert schrieb: > Wenn du ein True/False Ergebnis erwartest: >
Vielen Dank.
value & (value-1) stellt sicher, das höchstens 1 bit in value gesetzt ist. value & mask stellt sicher, das mindestens ein Bit der Maske gesetzt ist. Zusammen heisst das als, das exakt 1 bit der Maske gesetzt ist, und kein anderes bit. Daniel A. schrieb: > exactly_one_bit_set = bool( value & mask and value & (value-1) ) Sicher?
Ups, ich hatte ein "not" vergessen:
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
Noch kein Account? Hier anmelden.
|
|