C Programming - Bitwise Operators - Discussion
Discussion Forum : Bitwise Operators - Point Out Correct Statements (Q.No. 2)
2.
Which of the following statements are correct about the program?
#include<stdio.h>
int main()
{
unsigned int num;
int c=0;
scanf("%u", &num);
for(;num;num>>=1)
{
if(num & 1)
c++;
}
printf("%d", c);
return 0;
}
Answer: Option
Explanation:
If we give input 4, it will print 1.
Binary-4 == 00000000 00000100 ; Total number of bits = 1.
If we give input 3, it will print 2.
Binary-3 == 00000000 00000011 ; Total number of bits = 2.
If we give input 511, it will print 9.
Binary-511 == 00000001 11111111 ; Total number of bits = 9.
Discussion:
12 comments Page 1 of 2.
Sibysagar said:
3 years ago
@Aami.
As we num>>=1 right shift the value of num, when it reaches binary value 0000000000000000 it gets out of for loop.
If we give num=4;
then the loop runs for 3 three times and the num value will be;
1st time entering loop num will be 4 (0000000000000100) after the right shift it will be(0000000000000010).
2nd time entering loop num will be 2 (0000000000000010) after the right shift it will be(0000000000000001).
3rd time entering loop num will be 1 (0000000000000001) after the right shift it will be (0000000000000000).
4th time entering loop num will be 0 (0000000000000000) so code will exit for a loop.
As we num>>=1 right shift the value of num, when it reaches binary value 0000000000000000 it gets out of for loop.
If we give num=4;
then the loop runs for 3 three times and the num value will be;
1st time entering loop num will be 4 (0000000000000100) after the right shift it will be(0000000000000010).
2nd time entering loop num will be 2 (0000000000000010) after the right shift it will be(0000000000000001).
3rd time entering loop num will be 1 (0000000000000001) after the right shift it will be (0000000000000000).
4th time entering loop num will be 0 (0000000000000000) so code will exit for a loop.
Pavan said:
5 years ago
T+=i&1 is same as T=T+(i&1) i.e,adding result (i&1) to initial value of T and again storing it in T.
Suheel said:
6 years ago
What "T+=i&1;" means?
Mihir said:
9 years ago
Thanks @Kadarkarai Selvam.
Aami said:
9 years ago
No termination condition for FOR LOOP? Will it runs infinitely.
Lohith said:
1 decade ago
Num &1 means doing AND operation for num and 1 for example.
Num = 0010(2).
1 = 0001.
-----------.
0000 (Here c will no increment and goes to for loop).
For next loop right bit shift was implemented.
Num = 0001(2).
1 = 0001.
-----------.
0001 (here c will be increment and goes to for loop).
This process was continued up to num times.
if (0)
{
Terminated the if condition and goes to for loop.
}
if (1)
{
Execute the if condition.
}
Num = 0010(2).
1 = 0001.
-----------.
0000 (Here c will no increment and goes to for loop).
For next loop right bit shift was implemented.
Num = 0001(2).
1 = 0001.
-----------.
0001 (here c will be increment and goes to for loop).
This process was continued up to num times.
if (0)
{
Terminated the if condition and goes to for loop.
}
if (1)
{
Execute the if condition.
}
Ash said:
1 decade ago
What is the meaning of if(num&1)?
Kadarkarai Selvam said:
1 decade ago
Let us take num=20
Here num>>=1 means that num=num>>1
In for loop,
At num =20 ie 0001 0100
Now num&1 gives 000000 so it wont increment c
Then at next loop,
num= num>>1 ie 0000 1010
Now num&1 gives 0000 0000 so it wont increment c
Then at next loop,
num= num>>1 ie 0000 0101
Now num&1 gives 0000 0001 so it increment c
Like that it goes and c increments for 2 times in this case..
Thus it gives the number of ON bits in num..
Here num>>=1 means that num=num>>1
In for loop,
At num =20 ie 0001 0100
Now num&1 gives 000000 so it wont increment c
Then at next loop,
num= num>>1 ie 0000 1010
Now num&1 gives 0000 0000 so it wont increment c
Then at next loop,
num= num>>1 ie 0000 0101
Now num&1 gives 0000 0001 so it increment c
Like that it goes and c increments for 2 times in this case..
Thus it gives the number of ON bits in num..
Varun said:
1 decade ago
I think it is short hand operator such that num=num>>1 ?
Spa said:
1 decade ago
@vijay yes i too have d same doubt.
what is mean by num>>=1 ?
what is mean by num>>=1 ?
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers