Write a C program to input a number from user and count total number of ones (1s) and zeros (0s) in the given number using bitwise operator. How to count zeros and ones in a binary number using bitwise operator in C programming.
Example
Input
Input any number: 22
Output
Output number of ones: 3 Output number of zeros: 29
Required knowledge
Bitwise operators, Data types, Variables and Expressions, Basic input/output, If else, For loop
Logic to count zeros and ones in a binary number
Step by step descriptive logic to count zeros and ones in a binary number.
- Input a number from user. Store it in some variable say num.
- Compute total bits required to store integer in memory i.e.
INT_SIZE = sizeof(int) * 8
.Must read – How to find size of a data type using sizeof() operator.
- Initialize two variables to store zeros and ones count, say
zeros = 0
andones = 0
. - Run a loop from 0 to
INT_SIZE
. The loop structure should look likefor(i=0; i<INT_SIZE; i++)
. - Inside the loop check if Least Significant Bit of a number is set, then increment ones by 1 otherwise increment zeros by 1.
- Right shift num 1 time i.e. perform
num = num >> 1;
.
Program to count zeros and ones in a binary number
/**
* C program to count total of zeros and ones in a binary number using bitwise operator
*/
#include <stdio.h>
#define INT_SIZE sizeof(int) * 8 /* Total number of bits in integer */
int main()
{
int num, zeros, ones, i;
/* Input number from user */
printf("Enter any number: ");
scanf("%d", &num);
zeros = 0;
ones = 0;
for(i=0; i<INT_SIZE; i++)
{
/* If LSB is set then increment ones otherwise zeros */
if(num & 1)
ones++;
else
zeros++;
/* Right shift bits of num to one position */
num >>= 1;
}
printf("Total zero bit is %d\n", zeros);
printf("Total one bit is %d", ones);
return 0;
}
In the above code if(num & 1)
is equivalent to if((num & 1) == 1)
.
In the statement num >>= 1;
I have used shorthand assignment operator which is equivalent to num = num >> 1;
Output
Enter any number: 22 Total zero bit is 29 Total one bit is 3
Happy coding 😉
Recommended posts
- Bitwise operator programming exercises index.
- C program to count trailing zeros in a binary number.
- C program to count leading zeros in a binary number.
- C program to flip bits of a binary number using bitwise operator.
- C program to swap two numbers using bitwise operator.
- C program to check whether a number is even or odd using bitwise operator.