I have next code:
std::cout << (-10 >> 1) << std::endl;
std::cout << (-9 >> 1) << std::endl;
std::cout << (-8 >> 1) << std::endl;
std::cout << (-7 >> 1) << std::endl;
std::cout << (-6 >> 1) << std::endl;
std::cout << (-5 >> 1) << std::endl;
std::cout << (-4 >> 1) << std::endl;
std::cout << (-3 >> 1) << std::endl;
std::cout << (-2 >> 1) << std::endl;
std::cout << (-1 >> 1) << std::endl;
The result is:
-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
But why?
-1
is 1111 1111
(for 1 byte), -1 >>
1 must be : 1011 1111
and it is not -1
or 0
! (sign-bit is not shifted, I know)
Can someone explain to me how this works?