one day one cannon
or
one week five connon
#coding=utf-8
'''
Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.
Note:
The given integer is guaranteed to fit within the range of a 32-bit signed integer.
You could assume no leading zero bit in the integer’s binary representation.
Input: 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits),
and its complement is 010. So you need to output 2.
Input: 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits),
and its complement is 0. So you need to output 0.
'''
from math import log
class Solution(object):
def findComplement(self,num):
self.num=num
print num
len=int(log(num,2))+1
y=(2**len)-1
print y
result=y^num
print type(result)
return result
def findComplement1(self,num):
self.num=num
y=(1<<num.bit_length())-1 #这里在测试的时候,必须要以一个整型变量
#不能直接一个整数,如不能5.bit_length()
#只能a=5;a.bit_length()
return y^num
X=Solution()
print X.findComplement1(5)