This is the code:
char x=-1>>2;
printf("%d",x);
Even if i do x = -N>>2 it will give 1 only.
x = -1 => 11111111
x= -1>>2 ==> 00111111 = 3F ??
Also even if I do int x = -1>>2 the output will be 1.
Could you explain how this calculation is carried out?
I believe your code will work if you use
For signed numbers (including characters), right shift does not append zeroes. This is called sign bit extension. C uses 2’s complement form to store negative numbers. For negative numbers, sign bit (MSB) is 1 in this form which is padded during the operation. Using unsigned number will fix the issue.