求补数
#!/usr/bin/env python3 # -*- coding: utf-8 -*- class Solution(object): def number_Complement(self, num): i = 1 while i <= num: i = i << 1 return (i - 1)^num if __name__ == '__main__': num = int(input("Enter the num:")) print(num,"'s number_complement is",Solution().number_Complement(num))
1 2 4 8 16
得知 i 的值后,取大于 i 上的值,例如 i = 6,则取 8.
再用 (8 - 1)和 i 的值异或, (8 - 1)^ 6 = 1
数字为 int 类型,bit位为32位, 7 和 6前29位bit位是相同的。