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.

Pavan anjali said:   2 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.

Pavan said:   3 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:   5 years ago
I don't understand when I write %u in scanf, how is it behaving like %d?

Radhey said:   5 years ago
Unsigned means?

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

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

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

Kannan said:   8 years ago
Why the program print binary value. What cmd?

Vishal singh said:   9 years 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.

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


Post your comments here:

Your comments will be displayed after verification.