题解 | #求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;
}

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
5 1 评论
分享
牛客网
牛客企业服务