二进制中1的个数
✨ 思路:要求的是一个整形的数,其二进制的位数中有几个1
✨二进制位就想到了按位操作符,和位移操作符都是对二进制位进行操作的
&1 可以检查最低位是0还是1 移位>>就可以控制最低位的位置,我们让最低位移动i位
//计算一个数的二进制位中 1的个数
int NumberOf1(int n) {
int ret = 0;
for (int i = 0; i < 32; i++)
{
if ((n >> i) & 1 == 1)
{
ret++;
}
}
return ret;
}
✨另外一个思路:n&(n-1) 这个思路才是应该学会的重点
✨写出来,有一个规律,那就是每一次 & 就会让你少一个0,为什么呢?🧑🎓十进制中 n和n-1差了一个 1,是不是从n开始,一直 n=