Flipping bits

  • + 0 comments

    Definitely less elegant than other solutions, but for my fellow beginners:

    def flippingBits(n):
    
            # turn 'n' into binary string
            l=format(n, '032b')
            m=[]
    
            # flip all bits
            for i in range(len(l)):
                    m.append(1-int(l[i]))
    
            num=0
            if m[-1]==1:
                    num+=1
            for i in range(len(m)-1):
    
                    # start from the back of the string, skip m [ -1 ]
                    curr=int(m[-i-2])
                    num+=(2*curr)**(i+1)
            return(num)