class Solution:
def findComplement(num):
"""
:type num: int
:rtype: int
"""
i = 1
#从第一位开始一位一位按位异或获得补数
while num >= i:
# ^表示按位进行亦或运算
num ^= i
# 各二进位全部左移若干位,高位丢弃,低位补0
i <<= 1
return num
# 输入: 5
# 输出: 2
# 解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。
# 输入: 1
# 输出: 0
# 解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。
if __name__ == '__main__':
print(Solution.findComplement(5))
python 刷LeetCode 之 【数字的补数】
猜你喜欢
转载自blog.csdn.net/ThrallOtaku/article/details/80437402
今日推荐
周排行