本文主要是介绍【C language】统计某数中二进制1的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题解:统计某数中二进制1的个数(取模法 + 看某位是1/0法 + 干掉最右边的1法)
目录
- 1.题目
- 2.取模法
- 3.看某位是1/0
- 4.干掉最右边的1
1.题目
题目:设计一个程序,统计某数中二进制1的个数
2.取模法
int main()
{int num = 15;int count = 0;while (num){if (num % 2 == 1) count++;num /= 2;}printf("count = %d\n", count);return 0;
}
缺点:当num < 0时,result error!!!
示例:
3.看某位是1/0
确定某一位是0/1,公式如下
公式:ret = (n >> i) & 1
详情:LINK
int main()
{int num = -1;int count = 0;int i = 0;while (i < 32){if (((num >> i) & 1) == 1) count++;i++;}printf("count = %d\n", count);return 0;
}
4.干掉最右边的1
干掉二进制最右边的1,公式如下:
公式:ret = n & (n - 1)
详情:LINK
int main()
{int num = -1;int count = 0;while (num){num = (num & (num - 1));count++;}printf("count = %d\n", count);return 0;
}
EOF
这篇关于【C language】统计某数中二进制1的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!