#!/usr/bin/python ''' Set a bit in a binary number: 1) Shifts 1 over by i bits 2) make an OR with the number, only the value at bit i will change and all the others bit of the mask are zero so will not affect the num ''' def set_bit(num, i): mask = 1 << i return bin( num | mask ) if __name__ == '__main__': num = int('0100100', 2) print set_bit(num, 0) #'0b100101' print set_bit(num, 1) #'0b100110' print set_bit(num, 2) # nothing change '0b100100' print set_bit(num, 3) #'0b101100' print set_bit(num, 4) #'0b110100' print set_bit(num, 5) # nothing change '0b100100'