#!/usr/bin/env python3 # -*- coding: utf-8 -*- # author: bt3gl def set_bit(num, i): mask = 1 << i return bin( num | mask ) def update_bit(num, i, v): mask = ~ (1 << i) return bin( (num & mask) | (v << i) ) def count_bits_swapped(a, b): count = 0 m = a^b while m: count +=1 m = m & (m-1) return count def clear_bit(num, i): mask = ~ (1 << i) # -0b10001 return bin(num & mask) def swap_bit_in_place(a, b): a = a^b b = a^b a = a^b return a, b def find_how_many_1_in_a_binary(num): counter = 0 while num: if num & 1: counter += 1 num >>= 1 return counter if __name__ == '__main__': binary_number = '10010000' binary_number2 = '01011010' integer_number = int(binary_number, 2) integer_number2 = int(binary_number2, 2) print(f'Integer number: {integer_number}') print(f'Binary number: {binary_number}') print(f'\nUpdate bit: {update_bit(integer_number, 2, 1)}') print(f'Set bit: {set_bit(integer_number, 2)}') print(f'Clear bit: {clear_bit(integer_number, 4)}') print(f'\nI: {integer_number}, I2: {integer_number2}') print(f'B: {binary_number}, B2: {binary_number2}') print(f'Count bits swapped: {count_bits_swapped(integer_number, integer_number2)}') print(f'\nSwap bit in place: {swap_bit_in_place(integer_number, integer_number2)}') print(f'Find how many 1 in a binary: {find_how_many_1_in_a_binary(integer_number)}')