解题思路:
合理使用位运算与‘&’可以用来求二进制数的1的个数
num=num&(num-1);
定义一个循环,当num!=0就继续循环
例如:4&3 【位运算都是二进制补码参与运算】
(前面的0省略不写)0100 【8 4 2 1】
(前面的0省略不写)0011 【8 4 2 1】
位运算的结果是:
(前面的0省略不写)0000 【8 4 2 1】
此时结果为0,计数器加1(即二进制表示的4中有一个‘1’)
参考代码:
#include <iostream> using namespace std; int main() { int count=0,a,b,num;//定义一个计数器count用来存储二进制中1的个数 cin>>a>>b; while(b>=a)//实现a~b的循环遍历 { num=a; while(num!=0) { num=num&(num-1);//重点 count++; } a++; } cout<<count<<endl; return 0; }
0.0分
2 人评分
C二级辅导-求偶数和 (C语言代码)浏览:631 |
C二级辅导-同因查找 (C语言代码)浏览:553 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:564 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:691 |
C语言训练-计算1~N之间所有奇数之和 (C语言代码)浏览:644 |
【偶数求和】 (C语言代码)浏览:639 |
【蟠桃记】 (C语言代码)浏览:664 |
【金明的预算方案】 (C++代码)浏览:935 |
校门外的树 (C语言代码)浏览:692 |
C语言训练-自由落体问题 (C语言代码)浏览:610 |