【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)

原创 2016年05月30日 17:19:10

输入一个整数,输出该数二进制表示中1的个数。如输入32,输出1.


代码实现:


方法1:与运算


#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

int FindOneNumber(unsigned int num)
{
    int numberofOne = 0;
    while (num)
    {
        num = num & (num - 1);
        numberofOne++;
    }
    return numberofOne;
}


void Test()
{
    int num = 32;
    cout<<FindOneNumber(num)<<endl;
}


int main()
{
    Test();
    system("pause");
    return 0;
}


方法2:模除法

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

int FindOneNumber(unsigned int num)
{
    int numberofOne = 0;
    while (num)
    {
        if(num % 2 == 1)        
        numberofOne++;
        num /= 2;
    }
    return numberofOne;
}


void Test()
{
    int num = 32;
    cout << FindOneNumber(num) << endl;
}


int main()
{
    Test();
    system("pause");
    return 0;
}


方法3:移位

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

int FindOneNumber(unsigned int num)
{
    int numberofOne = 0;
    while (num)
    {
        if (num & 1)
            numberofOne++;
        num = num >> 1;
    }
    return numberofOne;
}


void Test()
{
    int num = 32;
    cout << FindOneNumber(num) << endl;
}


int main()
{
    Test();
    system("pause");
    return 0;
}


本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1771992

相关文章推荐

c语言:统计整数二进制表示中1的个数(汉明重量)

问题描述:对于一个字节的无符号整型变量,求其二进制表示中1的个数。 第一次见到这个问题应该是icephone第一次例会的时候,问题虽然简单,但也值得深思。 后来查阅资料的时候才知道这个问题有个正式...

C语言 统计整数二进制表示中1的个数

原文转自:http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152408.html 这是一个很有意思的问题,也是在面试中最容...

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

基础知识: 在实现这道题目之前,建议先补充下基础知识。  比如什么是原码,反码,补码。什么是位运算 这里给大家推荐几个参考链接:  http://www.cnblogs.com/zhangziqi...

Java实现输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

基础知识:在实现这道题目之前,建议先补充下基础知识。 比如什么是原码,反码,补码。什么是位运算这里给大家推荐几个参考链接: http://www.cnblogs.com/zhangziqiu/ar...

C语言之输出一个数的每一位,和获取一个二进制数所有奇数和偶数位,输出二进制序列的区别。

1:输出一个整数的每一位。 输出一个整数的每一位是对其操作数从低位到高位输出。 #include #include int main() { int data = 0; int arr[10...

c语言实现一个正整数返回二进制参数的偶数位和奇数位顺序输出

编写了一个程序实现一个正整数返回二进制参数的偶数位和奇数位顺序输出,但是总觉得自己写的很麻烦,但实在想不出来怎么改的更好,毕竟只是个c入门,不懂的地方还有很多,一些语言自身能力没有办法去简化,还需要大...

反转一个字节 和 判断32位整数二进制中1的个数 的算法(ZZ)

呵呵,好东东,共享,好像有一个是微软的面试题 unsigned char reverse8( unsigned char c ) {      c = ( c & 0x55 ) > 1;   ...

反转一个字节 和 判断32位整数二进制中1的个数 的算法

好像有一个是微软的面试题 unsigned char reverse8( unsigned char c ) {      c = ( c & 0x55 ) > 1;      c = ( c...
  • xhhjin
  • xhhjin
  • 2012年07月23日 11:42
  • 1018

写一个函数返回参数二进制数中1的个数的几种方法

方法一: 首先,简单思路为:给该整数模2除2我们就能得到该数2进制的每一位 用9举例,9的二进制数为1001   (9%2=1,(9/2)%2=0, (9/2/2)%2=0, (9/2/2/2)%...

读博客”求一个整数中二进制数1的个数“两种方法分析

原文章链接:http://blog.csdn.net/cqs_experiment/article/details/18031935 在我给出的链接中的博客介绍了两种“求一个整数中二进制数1的个数”的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)
举报原因:
原因补充:

(最多只允许输入30个字)