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

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

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

(1)辗转相除法:
#include <stdio.h>
int main(){
    int a,count = 0;
    scanf("%d",&a);
    while(a){
        if(a % 2 == 1){  //辗转相除法
            count++;
        }
        a /= 2;
    }
    printf("%d\n",count);
    return 0;
}

(2)移位运算:
#include <stdio.h>
int main(){
    int a,count = 0;
    scanf("%d",&a);
    while(a){
        count += a & 1;      //与运算,同 1 为 1
        a = a >> 1;          //与运算一次后,右移一位,将与过的最低位舍弃
    }
    printf("%d\n",count);
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:05
俺不中了,BOSS遇到了一个hr,我觉得我咨询的问题都很正常吧,然后直接就被拒绝了???
恶龙战士:你问的太多了,要不就整理成一段话直接问他,一个一个问不太好
点赞 评论 收藏
分享
程序员小白条:太晚了,看别人找到实习了才投的话,自己本身就没啥准备,计划太晚咯,只能吞苦果子
点赞 评论 收藏
分享
评论
7
1
分享

创作者周榜

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