剑指offer:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
程序员文章站
2024-01-31 08:13:04
...
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
分析:只要n不为0就将计数器加1,然后利用公式n=n&(n-1)会每次从最后消掉一个1,消完了n就为0了,不再计数,这可以减少循环次数,否则一个整数要进行32次循环。
int NumberOf1(int n) {
int count = 0;
int na = 32;
while(na--)
{
if(n&1 == 1)
{
count++;
}
n = n>>1;
}
return count;
}
推荐阅读
-
剑指offer:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
-
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
-
【输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示---------【剑指offer】】
-
第十二题:输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示。
-
输入一个整数,输出该数二进制表示中1的个数(其中负数用补码表示)-- 剑指offer
-
Java 实现输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
-
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)