class Solution {
public:
int NumberOf1(int n) {
int res=0;// 初始化一个变量来统计 'n' 的二进制表示中的1的个数
for(int i=0;i<32;i++)// 遍历 'n' 的每一位,假设 'n' 是一个32位整数
{
if(n>>i&1)// 通过将 'n' 右移i位并与1进行位运算来检查第i位是否为1
res++;// 如果第i位为1,就增加计数
}
return res;
}
};
/*class Solution {
public:
int NumberOf1(int n) {
int res=0;// 初始化一个变量来统计 'n' 的二进制表示中的1的个数
//当 n 不为 0 时执行循环
while(n)
// n&-n 可以得到 n 的最低位的1所代表的值
// 减去 n 的最低位的1所代表的值,相当于把 n 的最低位的1变为0
// 同时计数器 res 增加1
n-=n&-n,res++;
return res;
}
};*/