题解 | #求int型正整数在内存中存储时1的个数#

求int型正整数在内存中存储时1的个数

http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9

自己的代码思路是:输入的数据对2循环取余和取商,记录余数为1的次数:

#include<stdio.h>
int main(){
    int m,i;
    while(scanf("%d",&m)!=EOF){
        i=0;
        while(m>0){
            if(m%2==1) i++;
            m/=2;
        }printf("%d\n",i);
    }
    
}

提交通过之后,翻看评论区学习其他小伙伴的思路,果然有效率更高的解法:

#include <stdio.h>
 
int main(int argc, char *argv[])
{
    int num = 0;
    int cnt = 0;
     
    scanf("%d", &num);
    while(num)
    {
        num = num&(num-1);
        cnt++;
    }
    printf("%d", cnt);
     
    return 0;
}
全部评论

相关推荐

12-07 10:09
复旦大学 Java
点赞 评论 收藏
分享
专业嗎喽:个人信息名字太大,合到电话邮箱那一栏就行,有党员写过党,剩下其他全删,站空太大了 把实习经历丰富,放最前面,然后是个人评价,技能之类的,然后是学校信息。项目经历最后面,可以就选一个自己擅长的。 现在是学校不是92就扣分的,没必要放前面。 然后现在看重实习经历>竞赛经历(校园经历)>课程项目经历
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务