This program is to reverse a number
Logic:
Loop through all the bits of an integer.
If a bit at ith position is set in the i/p no.
then set the bit at (NO_OF_BITS – 1) – i in o/p.
Where NO_OF_BITS is number of bits present in the given number.
#include <stdio.h>
#define MAX_BIT (sizeof(int) * 8)
int display_binary(unsigned int num)
{
int i;
for(i = MAX_BIT-1; i>=0; i--)
{
if((num >> i)&1)
printf("1");
else
printf("0");
}
}
int reverse_num( unsigned int num, int *revnum)
{
int i = 0;
for(i; i <MAX_BIT; i ++)
{
if ((num >> i) & 1)
*revnum = *revnum | 1UL << (MAX_BIT - i -1);
}
}
int main()
{
unsigned int num, revnum;
printf("\n Enter the first number : ");
scanf("%u",&num);
printf("\n The original number is: %u decimal:", num);
display_binary (num);
printf("\n\n");
reverse_num(num, &revnum);
printf("\n The reverse of a number is %u decimal:", revnum);
display_binary(revnum);
return 0;
}
Output:
Enter the first number : 255
The original number is: 255 decimal:00000000000000000000000011111111
The reverse of a number is 4278190080 decimal:11111111000000000000000000000000
Categories: C Language
Leave a Reply