# 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;
}
```

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.

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.

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

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:

Quick links

Quantitative Aptitude

Verbal (English)

Reasoning

Programming

Interview

Placement Papers