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

1.运用了除法,取余方式递推出结构
2.运用右移符(>>)运算
3.利用算术与(&)运算

三种方法效率越来越高,减少成本

#include<stdio.h>

int Number1(int n)
{
    int k;
    int count=0;
    while (n > 0)
    {
        k = n % 2;
        n /= 2;
        if (1 == k)
        {
            count++;
        }
    }
    return count;
}

int Number2(int n)
{
    int count = 0;
    while (n>0)
    {
        if ((n & 1) == 1)
        {
            count++;
        }
        n = n >>1 ;
    }
    return count;
}

int Number3(int n)
{
    int count = 0;
    while (n)
    {
        n = n&(n - 1);
        count++;
    }
    return count;
}
int main()
{
    int n;
    printf("请输入一个数:\n");
    scanf("%d",&n);
    int ret1=Number1(n);
    printf("%d\n",ret1);
    int ret2 = Number2(n);
    printf("%d\n",ret2);
    int ret3 = Number3(n);
    printf("%d\n",ret3);
    system("pause");
    return 0;
}

原文地址:https://blog.51cto.com/14233078/2378424

时间: 2024-10-11 01:52:40

写一个函数返回参数二进制中 1 的个数(三种方法)的相关文章

写一个函数返回参数二进制中 1 的个数

#include<stdio.h>int main(){   int num; int s=0,ys=0,count=0;  printf("请输入一个数字:");    scanf("%d",&num);     for(s=num;s>=1;)     {     ys=s%2;         s=s/2;         if (ys==1)      {    count++;         }     }    printf(

写一个函数返回参数二进制中 1 的个数 比如: 15 &nbsp; &nbsp; 0000 1111 &nbsp; &nbsp; 4 个 1

方法一: 程序: #include<stdio.h> int  count_one_bits(int t) { int i = 32; int count = 0; while (i>0) { if (t & 1 == 1) { count++; } //t=t/2 t = t >> 1; i -= 1; } return count; } int main() { int t = 0; printf("请输入一个整数:"); scanf(&quo

一个函数返回参数二进制中 1 的个数

方法一: #include<stdio.h> int bit_count(unsigned int n) { int count; for (count = 0; n; n &= n - 1) { count++; } return count; } int main() { int y; int c; printf("请输入一个数:"); scanf("%d", &c); y = bit_count(c); printf("%

用C语言写一个函数返回参数二进制中1的个数

首先,给出正确的C语言代码如下: #include <stdio.h> int count_one_bits(unsigned int value) { int count =0; while(value) { if(value%2==1) { count++; } value=value/2; } return count; } int main() { unsigned int num=0; int ret=0; scanf("%d",&num); ret=co

写一个函数返回参数二进制中1的个数

分析: (1)输入一个数 (2)判断它是否为0. (3)如果不为0,就对它进行模2取余,模2的过程就相当于把这个数向右移除了一位,如果余数为1,则证明移除的这一位为1,就将其记录下来.如果余数为0,就证明移除的这一位为0,就不记录. (4)经过第3步以后,对这个数进行除2取整,再进入到第2步中.如此循环,直到第3步中判断为0. 注意: (1)对于负数,在内存中是以其补码形式存放的.例如-1,它的二进制中有32个1. (2)以下方法中对于函数形参的定义方式有两种,一种是无符号整型,一种是有符号整型

用一个函数返回参数二进制中1的个数

//题目:写一个函数返回参数二进制中的1的个数 //      比如:15    0000 1111  4个1 //     程序原型:  int count_one_bit(unsigned int value) //                {  //                        //返回1的个数 //                 }     #include<stdio.h> #include<stdlib.h> int count_one_bit

写一个函数,将字符串中空格替换为%20。

写一个函数,将字符串中空格替换为%20.样例:"abc defgx yz"替换为"abc%20defgx%20yz".这道题是一道简单的字符和字符串替换题,字符的替换直接用指针即可,每次都需要把空格后的字符串保存到一个数组中,然后把空格替换为%20后再将刚刚拷贝的字符串拷贝到%20的后面,代码如下: Fun(char str){char p = str;char arr[20];while (p != '\0'){if (p == ' '){strcpy(arr,

C#中datatable导出excel(三种方法)

方法一:(拷贝直接可以使用,适合大批量资料, 上万笔)Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();SaveFileDialog savefiledialog = new SaveFileDialog();System.Reflection.Missing miss = System.Reflection.Missing.Value;ap

spring在xml文件中配置bean的三种方法

一.最常见,也是缺省,是调用spring的缺省工厂类 spring缺省工厂类:org.springframework.beans.factory.support.DefaultListableBeanFactory使用其静态方法preInstantiateSingletons() 配置文件中最普通最基本的定义一个普通bean<bean id="DvdTypeDAOBean" class="com.machome.dvd.impl.DvdTypeDAO" >