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;
}
ffff
0fff
0000
fff0
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.
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.

Akshay g said:   8 years ago
The Explanation/answer is incorrect.

Because of {int } takes 4 bytes in windows .So, the answer is ffffffff.

Nandhu said:   1 decade ago
unsigned int i = -1;

Here i is unsigned even if we declare negative number it will consider as positive

Mayur said:   3 years ago
Binary of 1(2byte) : 0000 0000 0000 0001.

I didn't understand this step. Can someone explain it?

Shankr said:   1 decade ago
@Naresh.

If negative number is shifted it must append with 1.

So output is ffff and not 7fff.

Kiruba said:   1 decade ago
How does 1111 1111 1111 1111 give the same when it is divided by 2(right shifting once)?

Priya Ramesh said:   1 decade ago
Coder will you explain the program with <<, >> using this symbols.

Naumi said:   1 decade ago
It is a format specifier for the hexadecimal digits. Like %d for integer type.

Basha said:   1 decade ago
Please tell me ! In bitwise operators what use of >>,<<,~.

Sam said:   1 decade ago
unsigned int never takes -ve value..it ranges from 0 t0 65535..

Gourav said:   4 years ago
If it takes 17<<2 what is the output? Please explain.
(1)


Post your comments here:

Your comments will be displayed after verification.