The complement of an integer is the integer you get when you flip all the
0
's to1
's and all the1
's to0
's in its binary representation.
- For example, The integer
5
is"101"
in binary and its complement is"010"
which is the integer2
.Given an integer
n
, return its complement.
class Solution:
def bitwiseComplement(self, n):
# 特例
if n == 0:
return 1
# 2 ^ fac (base 2)
fac = 1
res = 0
while n != 0:
# n + complement 的 binary = 1
# 直接用 complement 的二进制码算
res += fac * (1 - n % 2)
# 每次算出 n 的最后一位,fac 相应 *2
n //= 2
fac *= 2
return res