简单网站建设推荐,建网站wordpress,wordpress拒绝服务,动态域名做网站1.问题描述#xff1a;给定一个整数#xff0c;统计其对应的二进制中含有1的个数。比如8(0000 1000),对应的二进制数中#xff0c;只含有一个1.
2.设计思路#xff1a;对x取余#xff1a;zx%2。如果z#xff01;0#xff0c;说明x的末尾不是为1.对于一个二进制x4x3x2x1…1.问题描述给定一个整数统计其对应的二进制中含有1的个数。比如8(0000 1000),对应的二进制数中只含有一个1.
2.设计思路对x取余zx%2。如果z0说明x的末尾不是为1.对于一个二进制x4x3x2x1进行分析x1代表了1x2代表了2x3代表了4x4代表了8。所以可以将x循环往右移动xx1如果x对应的二进制数中含有1它一定会被移动到最低位上(x1)。那么此时x所表示的数一定为奇数x4x3x2x1中只有x1为1时所表示的数才为奇数。当x为奇数时x%2的结果为1。重复上述过程直到x为0便可以统计出x中含有1的个数。
3.代码
#include stdio.h
/*统计一个十进制整数对应的二进制数中含有1的个数*/int count(int x)
{int con 0;while(x){if(x%2 ! 0) //当x%2不等于0时表示此时x对应的二进制数的最低位上存在一个1 {con;}x x 1; //往右移移位即x x / 2 }return con;} int main()
{int ans;int a;printf(输入一个整数\n);scanf(%d,a);ans count(a);printf(含有1的个数为%d\n,ans);return 0;
}4.运行结果 5.总结
统计一个整数对应的二进制数中含有多少个1可以将整数x转换成二进制来分析。当二进制数的最低位为1时x%2的结果一定为1。然后将x往右移动一位(x x 1)。重复上述过程直到x为0时结束循环便可以得到x中含有多少个1。