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