补数

求补数

#!/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位是相同的。

posted @ 2017-02-18 02:12  小黄人python  阅读(290)  评论(0编辑  收藏  举报