思路
按位与1 进行 &运算(都是1 才是1),比较一次,移位一次,
可以(左)移1的位置,也可以(右)移num(输入的数)
右移num(注意,右移符号位补符号位,故设定无符号的整形)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#include <stdio.h> int main() { printf("input number>>>"); unsigned int num = 0; int one = 0;//1 的个数 int zero = 0;// 0 的个数 int i = 0; scanf("%u",&num); //sizeof 输出占多少个字节,一个字节8位二进制数,由于刚开始比较了一位,故循环次数-1 for(i=sizeof(num)*8-1;i>=0;i--) { //根据运算符优先级,&运算需要加运算符, if((num & 1) == 1) { one++; }else{ zero++; } num = num >> 1; } printf("one == %dn",one); printf("zero == %dn",zero); return 0; }
左移 1 ;(由于num没有移动,没有变化,故不用考虑num符号位的问题)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#include <stdio.h> int main() { printf("input number>>>"); int num = 0; int one = 0;//1 的个数 int zero = 0;// 0 的个数 int i = 0; scanf("%d",&num); for(i=sizeof(num)*8-1;i>=0;i--) { if(num&1<<i) { one++; }else{ zero++; } } printf("one == %dn",one); printf("zero == %dn",zero); return 0; }
最后
以上就是简单纸鹤最近收集整理的关于输入一个数,判断这个数的二进制有几个0,几个1(完整代码)的全部内容,更多相关输入一个数,判断这个数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复