查找输入整数二进制中1的个数;各进制转换方法;C语言实现

查找输入整数二进制中1的个数

http://www.nowcoder.com/questionTerminal/1b46eb4cf3fa49b9965ac3c2c1caf5ad

#include <stdio.h>

/*
各进制转换方法可参考图示:
https://jingyan.baidu.com/article/495ba84109665338b30ede98.html
十进制整数转其他进制:
如二进制,则除2取余,直至商为0得到最后一个余数;
  对应二进制数为除2过程中所得余数倒着排列,如所得余数依次为011,则对应二进制数为110

其他进制之间的转换可借助十进制作为中转,先转为十进制,再转到对应进制,感觉应该会更方便(按权展开相加即可得到十进制数)

还可借助转换说明:%d或%i(十进制),%x或%X(十六进制),%o(八进制)等得到对应进制
*/

int findNumberOf1(int num)
{
    int count=0;

    // 如1: 1/2=0...1
    while(num){
        if(num%2==1){
            count++;
//            printf("%d\n",count);
        }
        num /= 2;
    }

    return count;
}

int main()
{
    int n;

    while(scanf("%d",&n)!=EOF){
        int ret;
        ret = findNumberOf1(n);
        printf("%d\n",ret);
    }

    return 0;
}
全部评论

相关推荐

10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务