que tienen código siguiente:¿Por qué -1 >> 1 es -1? ¡Y 1 >> 1 es 0!
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;
El resultado es:
-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
Pero por qué?
-1
es 1111 1111
(por 1 byte), -1 >>
1 debe ser: 1011 1111
y no es -1
o 0
! (signo de bit no se desplaza, lo sé)
¿Puede alguien explicarme cómo funciona esto?
cada bit está desplazado, y no hay un bit de signo explícito en complemento a dos. – jalf