python: check bits

Persönliche Seite #7631065
Lesenswert?
• ▲
▼

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.")

OP #7631090
Lesenswert?
• ▲
▼

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:

1
> mask = 0x18
2
> result = value & mask
3
>

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.

#7631369
Lesenswert?
• ▲
▼
1
exactly_one_bit_set = bool( value & mask and value & (value-1) )

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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.