位运算,是自己平时最不熟悉的一块,相信很多人也是这样,但巧妙的运用位运算可以来解决很多题目,例如,剑指offer上面的一道:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
# -*- coding:utf-8 -*-
classSolution:
defNumberOf1(self, n):
# write code here
cnt =0
if n<0:
n = n &0xffffffff
while n:
cnt+=1
n =(n-1)& n
return cnt
通过按位与,巧妙的计算出二进制中"1"的个数。