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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren