常用 n&(n-1)来把数n的二进制位中最低位的1变为0。
例如:8[1000] & (8-1)[0111]=0[0000]正好将最低位的1变为0。
题目描述:输入一个无符号整数(以二进制的形式),返回其二进制表达式中数字位数为‘1’的个数。
题解:首先定义一个int型变量用来记录1的个数,然后通过循环来迭代进行位运算。
时间复杂度:O( log n );及循环次数为二进制数n中1的个数
空间复杂度:O(1);空间为常量空间。
常用 n&(n-1)来把数n的二进制位中最低位的1变为0。
例如:8[1000] & (8-1)[0111]=0[0000]正好将最低位的1变为0。
题目描述:输入一个无符号整数(以二进制的形式),返回其二进制表达式中数字位数为‘1’的个数。
题解:首先定义一个int型变量用来记录1的个数,然后通过循环来迭代进行位运算。
时间复杂度:O( log n );及循环次数为二进制数n中1的个数
空间复杂度:O(1);空间为常量空间。