题目链接:二进制中1的个数
题意:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路:
设置一个数1,然后依次向左移,判断当前 数字与 n的值,如果不为0,那么就加1
class Solution {
public:
int NumberOf1(int n) {
int ans = 0, k = 1;
while(k){
if((n & k) != 0){ // n & k 不为0,ans++
ans++;
}
k = k << 1; // k向左移
}
return ans;
}
};
本文深入解析了一种高效的算法,用于计算任意整数(包括负数)在二进制表示下1的个数。通过使用位运算技巧,文章详细介绍了如何遍历整数的所有位,检查每一位是否为1,并最终返回1的总数。此算法适用于计算机科学领域的初学者和专业人士,有助于提高对二进制和位操作的理解。
195

被折叠的 条评论
为什么被折叠?



