C程序对整数中设置为1的位数进行计数

Problem statement: Write a C program to count number of bits set to 1 in an Integer.

问题陈述:编写一个C程序来计算Integer中设置为1的位数

Solution: We can use bitwise operator here to solve the problem.

解决方案:我们可以在这里使用按位运算符来解决问题。

Pre-requisite: Input number n

前提条件 :输入数字n

Algorithm:

算法:

1)  Set count=1

2)  Do bit wise AND with n and 1. 
    n & 1

    let n be a7a6a5a4a3a2a1a0
    1->00000001
    So doing bitwise AND (refer to published article on bitwise operators) 
    will result in all bits 0 except the LSB which will be a0. 
    If a0 is 0 then the all bits are not set
    Thus,
    IF
        n& 1 == 1
        count++;
    END IF
    Right shift n by 1
    n=n>>1

3)  IF n==0
        Print count
    ELSE
        REPEAT step 1, 2

Example with Explanation:

解释示例:

Checking for 7
7->00000111

Initially, count=0

So first iteration:
n=7 //00000111
n & 1 =1
so , count=1
n=n>>1 (n=3) //00000011

So second iteration:
n=3 //00000011
n & 1 =1
count=2
n=n>>1 (n=1) //00000001

So third iteration:
n=1 //00000001
n & 1 =1
count=3
n=n>>1 (n=0) //00000000
So, Print count, 3


C implementation

C实现

#include <stdio.h>

int main()
{
	unsigned int n;
	printf("enter the integer\n");
	scanf("%d",&n);

	int count=0;

	while(n!=0){
		if(n & 1 == 1){ //if current bit 1
			count++;//increase count
		}
		n=n>>1;//right shift
	}

	printf("no of bits those are 1 ");
	printf("in its binary representation: %d\n",count);

	return 0;
}

Output

输出量

First run:
enter the integer
7
no of bits those are 1 in its binary representation: 3

Second run:
enter the integer
12
no of bits those are 1 in its binary representation: 2


翻译自: https://www.includehelp.com/c-programs/count-number-of-bits-set-to-1-in-an-integer.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值