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 1 of 2.

Mahendra said:   1 decade ago
correct one goes below

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
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 00
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 13 LOOP POSITION
Then num<<13 =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=0000000000001
0000 0000 0000 0100

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

hence finaly we have 000000000000100=4
(2)

Pavan anjali said:   4 years ago
If the int takes only positive values it is unsigned and signed means int takes both positive and negative numbers. As we know %c means char reads, %f means float reads.

Similarly %d means signed values read (both + answer -) and %u means unsigned values read-only + values.

Viraj said:   1 decade ago
1 <<15 = -32768 i.e. 1000 0000 0000 0000

In the loop the bits of 'num' are brought to the MSB one by one using left shift and ANDed with the 1000 0000 0000 0000

Pavan said:   5 years ago
Unsigned means its a datatype like int but it is type modifier i.e,int has 2 bytes of memory means it stores values from -327768 to 32767 it is specified as %d similarly unsigned also has 2 bytes(size) from 0 to 65535 specifier %u.

Vartika said:   7 years ago
I don't understand when I write %u in scanf, how is it behaving like %d?

Radhey said:   7 years ago
Unsigned means?

Rvm said:   7 years ago
%u means? Please explain in detail.

Bishal said:   8 years ago
What is %u in scanf?

Anu mishrs said:   9 years ago
No, this program is not giving output correctly only it give 1 or 0 due to conditional operator.

Kannan said:   1 decade ago
Why the program print binary value. What cmd?


Post your comments here:

Your comments will be displayed after verification.