C Programming - Bitwise Operators - Discussion
Discussion Forum : Bitwise Operators - Find Output of Program (Q.No. 1)
1.
Assunming, integer is 2 byte, What will be the output of the program?
#include<stdio.h>
int main()
{
printf("%x\n", -1>>1);
return 0;
}
Answer: Option
Explanation:
Negative numbers are treated with 2's complement method.
1's complement: Inverting the bits ( all 1s to 0s and all 0s to 1s)
2's complement: Adding 1 to the result of 1's complement.
1's complement: Inverting the bits ( all 1s to 0s and all 0s to 1s)
2's complement: Adding 1 to the result of 1's complement.
Binary of 1(2byte) : 0000 0000 0000 0001 Representing -1: 1s complement of 1(2byte) : 1111 1111 1111 1110 Adding 1 to 1's comp. result : 1111 1111 1111 1111 Right shift 1bit(-1>>1): 1111 1111 1111 1111 (carry out 1) Hexadecimal : f f f f (Filled with 1s in the left side in the above step)
Note:
1. Fill with 1s in the left side for right shift for negative numbers.
2. Fill with 0s in the right side for left shift for negative numbers.
3. Fill with 0s in the left side for right shift for positive numbers.
4. Fill with 0s in the right side for left shift for positive numbers.
Discussion:
26 comments Page 2 of 3.
New coder said:
10 years ago
As @Bheemraj said 24>>4 =1. I don't know how?
As far as I know, it should be 24=0001 1000 >> 1000 0001=129 by right shifting 4 times.
And what is the concept of multiplying by 1, 2, 4, 8 and dividing by 2, 4, 8, 6.
Also I don't know how does this happens.
1. Fill with 1s in the left side for right shift for negative numbers.
2. Fill with 0s in the right side for left shift for negative numbers.
3. Fill with 0s in the left side for right shift for positive numbers.
4. Fill with 0s in the right side for left shift for positive numbers.
I only know to fill vacant places by 0 not by 1. If anyone knows answers please explain.
Thank you.
As far as I know, it should be 24=0001 1000 >> 1000 0001=129 by right shifting 4 times.
And what is the concept of multiplying by 1, 2, 4, 8 and dividing by 2, 4, 8, 6.
Also I don't know how does this happens.
1. Fill with 1s in the left side for right shift for negative numbers.
2. Fill with 0s in the right side for left shift for negative numbers.
3. Fill with 0s in the left side for right shift for positive numbers.
4. Fill with 0s in the right side for left shift for positive numbers.
I only know to fill vacant places by 0 not by 1. If anyone knows answers please explain.
Thank you.
Bheemraj said:
1 decade ago
@fool coder.
>> shifts the bits in right direction, which means number is divided by 2, 4, 8, 16.
Example: 24>>4 gives output 1.
In case of left shift operator, it will multiply the no. by 1, 2, 4, 8. E.g. 17<<2 will give 68.
Can you explain more about negative numbers?
>> shifts the bits in right direction, which means number is divided by 2, 4, 8, 16.
Example: 24>>4 gives output 1.
In case of left shift operator, it will multiply the no. by 1, 2, 4, 8. E.g. 17<<2 will give 68.
Can you explain more about negative numbers?
Shankr said:
1 decade ago
@Naresh.
If negative number is shifted it must append with 1.
So output is ffff and not 7fff.
If negative number is shifted it must append with 1.
So output is ffff and not 7fff.
Nagamastan said:
1 decade ago
Very nice and thanks for the explanation.
Kiruba said:
1 decade ago
How does 1111 1111 1111 1111 give the same when it is divided by 2(right shifting once)?
SHAKTI said:
1 decade ago
What is o/p ?
#include<stdio.h>
int main()
{
printf("%x\n", -1>>1);
return 0;
}
#include<stdio.h>
int main()
{
printf("%x\n", -1>>1);
return 0;
}
Nandini said:
1 decade ago
What does ffff mean?
Priya Ramesh said:
1 decade ago
Coder will you explain the program with <<, >> using this symbols.
Priya Ramesh said:
1 decade ago
How we convert numbers into letters and letters into numbers by using hexadecimal system.
Example:1111's are indicated with f how it is possible.
Example:1111's are indicated with f how it is possible.
Nandhu said:
1 decade ago
unsigned int i = -1;
Here i is unsigned even if we declare negative number it will consider as positive
Here i is unsigned even if we declare negative number it will consider as positive
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers