一、是否是2的幂
题目:leetcode 231.2的幂
n&(n-1)会把最低位的1变为0,当n&(n-1) == 0 且n !=0时,说明n的二进制表示中有且只有一个1
代码如下:
return n&(n-1) == 0 and n !=0
二、二进制中1的个数
题目:leetcode 剑指offer 15.二进制中1的个数
代码:
res = 0
while n:
n &= n-1
res += 1
return res
题目:leetcode 231.2的幂
n&(n-1)会把最低位的1变为0,当n&(n-1) == 0 且n !=0时,说明n的二进制表示中有且只有一个1
代码如下:
return n&(n-1) == 0 and n !=0
题目:leetcode 剑指offer 15.二进制中1的个数
代码:
res = 0
while n:
n &= n-1
res += 1
return res