C Programming - Bitwise Operators - Discussion

Discussion Forum : Bitwise Operators - Point Out Correct Statements (Q.No. 1)
1.
Which of the following statements are correct about the program?
#include<stdio.h>

int main()
{
    unsigned int num;
    int i;
    scanf("%u", &num);
    for(i=0; i<16; i++)
    {
        printf("%d", (num<<i & 1<<15)?1:0);
    }
    return 0;
}
It prints all even bits from num
It prints all odd bits from num
It prints binary equivalent num
Error
Answer: Option
Explanation:

If we give input 4, it will print 00000000 00000100 ;

If we give input 3, it will print 00000000 00000011 ;

If we give input 511, it will print 00000001 11111111 ;

Discussion:
19 comments Page 2 of 2.

Vishal singh said:   1 decade ago
Sir I had executed this one and.

Answer is,
0100011101111000.

Since it is.
An conditional operator.
Asked to give 0.
Or 1 as a output.

Uma shnakr said:   1 decade ago
for(i=0; i<16; i++)
{
printf("%d", (num<<i & 1<<15)?1:0);
}

Lets assume num = 2.

Then num<<0 =0000 0000 0000 0100 & (1000 0000 0000 0000 this is 1<<15) = (all 0 so false condion so 0
PRINT 0
printed yet=0

same repeat

Then num<<1 =0000 0000 0000 1000 & (1000 0000 0000 0000 this is 1<<15)= (all 0 so false condion so 0
PRINT 0
printed yet=00

Then num<<2 =0000 0000 0000 1000 & (1000 0000 0000 0000 this is 1<<15)= (all 0 so false condion so 0
PRINT 0
printed yet=000
...............

AT 14 LOOP POSITION
Then num<<14 =1000 0000 0000 0000 & (1000 0000 0000 0000 this is 1<<15)= (all 1000 0000 0000 0000 so TRUE condion so 1
PRINT 1
printed yet=000000000000001
0000 0000 0000 0100

AT 15 LOOP POSITION
Then num<<15 =1000 0000 0000 0000 & (1000 0000 0000 0000 this is 1<<15)= (all 1000 0000 0000 0000 so TRUE condion so 1
PRINT 0
printed yet=0000000000000010

hence finaly we have 0000000000000010=2

Haritha said:   1 decade ago
Please explain it more clearly.

BHAKAR said:   1 decade ago
for(i=0; i<16; i++)
{
printf("%d", (num<<i & 1<<15)?1:0);
}

Lets assume num = 4.

Then num<<0 =0000 0000 0000 0100 & (1000 0000 0000 0000 this is 1<<15) = (all 0 so false condion so 0
PRINT 0
same repeat

Then num<<1 =0000 0000 0000 1000 & (1000 0000 0000 0000 this is 1<<15)= (all 0 so false condion so 0
PRINT 0
AT 14 LOOP POSITION

Then num<<14 =1000 0000 0000 0000 & (1000 0000 0000 0000 this is 1<<15)= (all 1000 0000 0000 0000 so TRUE condion so 1
PRINT 1
0000 0000 0000 0100

Prem said:   1 decade ago
If the condition is true it will print as 1 otherwise 0.

Sadhna said:   1 decade ago
Hi, I have a doubt in printf statement it will print either 0 or 1 as we are printing the result of a conditional statement, can someone explain this to me ?

Ankit said:   1 decade ago
Please explain it clearly.

Abhishek said:   1 decade ago
@Mohanty
num<<i
shifts one bit, so to shift 16 bits the condition is set as i<16

Mohanty said:   1 decade ago
What is "i<16"?


Post your comments here:

Your comments will be displayed after verification.