C Programming - Bitwise Operators - Discussion
|
|
|
|
Read more:"Hold a true friend with both hands."
- (Proverb)
|
| 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;
}
|
| [A]. |
It counts the number of bits that are ON (1) in the number num. | | [B]. |
It counts the number of bits that are OFF (0) in the number num. | | [C]. |
It sets all bits in the number num to 1 | | [D]. |
Error |
Answer: Option A
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.
|
|
Saurabh said:
(Fri, Jan 21, 2011 09:25:15 AM)
|
|
| |
| The answer is A. Let binary value of num is 10101 then the loop checks each bit on by 'if(num & 1)' and num>>=1 right shifts the num bits by 1bit |
|
|