Bitwise
Operations to Count the Number of Leading Zero’s in a Number x
#include
#include
#define num_bits_int (sizeof(int)*8)
int find(int);
void main()
{
int n, i, a, count
= 0, flag = 1, m = 1, j, cmp;
clrscr();
printf("Enter
the number\n");
scanf("%d", &n);
a = n >> 31
& 1;
if (a == 0)
{
for (i =
(num_bits_int)-1;i >= 0;i--)
{
a = (n
>> i)& 1;
if (a ==
0)
{
count++;
}
else
{
for (j
= n + 1;;j++)
{
cmp = find(j);
if
(cmp == (((num_bits_int)-1) - count) + 1)
{
printf("next higher power -> %d\n", j);
break;
}
}
break;
}
}
}
else
{
for (i =
(num_bits_int)-1;i >= 0;i--)
{
a = (n
>> i)& 1;
if (a == 1)
{
count++;
}
else
{
for (j
= n + 1;;j++)
{
cmp = find(j);
if
(cmp == (((num_bits_int)- 1) - count))
{
printf("next higher power -> %d\n", j);
break;
}
}
break;
}
}
}
}
int find(int n)
{
int count = 0, a,
flag = 1, i;
for (i = 0;i <=
(num_bits_int) - 1;i++)
{
a = (n
>> i) & 1;
if (a == 1
&& flag == 1)
{
return
count;
}
else
{
count++;
flag =
1;
}
}
getch();
}
Output
Enter the number
9
next higher power -> 16
Enter the number
-20
next higher power -> -16
Enter the number
44
next higher power -> 64
Enter the number
-7
next higher power -> -4
Enter the number
-31
next higher power -> -16
Enter the number
-56
next higher power -> -32
Enter the number
34
next higher power -> 64
No comments:
Post a Comment