【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

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

在实现这道题之前,我们先来了解下原码、反码、补码。 一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1 原码:...
  • yin1031468524
  • yin1031468524
  • 2017年02月16日 10:02
  • 1209

C语言输入一个整数,输出其二进制位中1的个数

大家都知道一个十进制数转化成对应的二进制形式的方法就是对这个十进制数不断的进行模2取余,然后将它的余数逆序输出就是其二进制形式。比如说: 其二进制位中1的个数即模2取余后1的个数。   那...
  • bbwn_
  • bbwn_
  • 2016年04月12日 12:52
  • 3381

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

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

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

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

给定一个整数,输出这个整数二进制表示中1的个数

参考书籍:计算机组成原理-蒋本珊 java程序员面试宝典-何昊等 问题:给定一个数,输出这个数二进制表示中1的个数。 package com.Howard.test11; /** * 给定一个整数 ...
  • zymx14
  • zymx14
  • 2017年04月09日 00:04
  • 471

【C语言】求一个数的二进制中 1 的个数

求一个数的二进制的1的个数
  • LX18792732127
  • LX18792732127
  • 2016年09月19日 11:33
  • 1546

求一个整数中二进制1的个数

题目:求一个整数二进制表示1的个数   第一版: 思路:如果一个整数与1做与运算,结果为1,那么该整数最右边一位是1,否则是0; int NumberOf1(int n) { int c...
  • djb100316878
  • djb100316878
  • 2014年12月18日 08:55
  • 2719

剑指offer——面试题10输入一个十进制整数,统计其中二进制1的个数

/** * 题目:输入一个十进制整数,统计其中二进制1的个数 * @author 大闲人柴毛毛 */ public class CountBitOne { /** * 这个问题最直观的思路...
  • u010425776
  • u010425776
  • 2016年03月09日 16:42
  • 1842

输入一个整数,求该整数的二进制表示中有多少个1

求一个整数的二进制中1的个数。      题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。       分析:这是一...
  • zhaojian3513012
  • zhaojian3513012
  • 2015年06月20日 13:01
  • 1230

C/C++求一个整数的二进制中1的个数

求一个整数的二进制中1的个数 收藏 题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 分析:这是一道很基本的考查位运算的面...
  • sdujava2011
  • sdujava2011
  • 2014年09月15日 20:36
  • 2794
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)
举报原因:
原因补充:

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