从品牌网站建设到网络营销策划,从策略到执行的一站式服务
在C语言的学习中我们也许会遇到求一个数的二进制序列中1的个数的题目
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、晋城网站维护、网站推广。下面我们介绍一种相对简易的方法
int main()
{
int i = 0;//定义一个i变量,即我们需要求二进制形式中1的个数的数字
scanf("%d", &i);//输入变量i的值
int count = 0;//定义一个变量以表示1的个数
while (i)
{
i = i & (i - 1);
count++;
}
printf("%d", count);//输出
return 0;
}
考虑到&操作符的特性
我们可以选取&操作符来达到我们的目标。
假设i的值为15,则i的二进制序列为 1111
若给i按位与上i-1 即i&(i-1)
此时即是1111-i
1110-(i-1)
1110-i&(i-1)
我们发现i最低位的1变成了0
此时我们再进行一遍 1110-i
1101-(i-1)
1100-i&(i-1)
我们发现i的1又减少了一个
那么以此类推,i每按位与一次(i-1)i的二进制形式中就会减少一个1,而最终i的值会变成0
考虑到while循环的特性(判断条件非0即进入循环),我们就可以写出上述的代码
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图