BIT_SIZE = 16
def print_binary(bits: int) -> None:
print(f"{bits:0{BIT_SIZE}b}")
def find_first_set_bit(bits: int) -> int:
for i in range(BIT_SIZE):
if bits & (1 << i):
return i
return -1 # No bits set
def print_set_bit_indexes(bits: int) -> None:
for i in range(BIT_SIZE):
if bits & (1 << i):
print(i, end=' ')
print()
bits = 0
bits |= (1 << 3)
bits |= (1 << 5)
bits |= (1 << 11)
bits |= (1 << 14)
print_binary(bits)
print("First set bit at index:", find_first_set_bit(bits))
print("All the set bits indexes:")
print_set_bit_indexes(bits)
'''
run:
0100100000101000
First set bit at index: 3
All the set bits indexes:
3 5 11 14
'''