解题思路:
合理使用位运算与‘&’可以用来求二进制数的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语言代码)......浏览:689 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:609 |
字符串问题 (C语言代码)浏览:1634 |
C语言考试练习题_排列 (C语言代码)浏览:767 |
C语言训练-求PI* (C语言代码)浏览:637 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:631 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:638 |
字符逆序 (C语言代码)浏览:706 |
1157题解浏览:769 |
1013题解浏览:596 |