Practico 4 ejercicio 3

Re: Practico 4 ejercicio 3

de Gustavo Brown -
Número de respuestas: 0
El estándar de C en realidad dice que el shift a la derecha (>>) de un tipo integral con signo está indefinido cuando se trabaja con un número negativo.
A efectos de este curso es mejor pensarlo como que hace un shift lógico (mete 0 a la izquierda) y uno le pone los 1 a la izquierda "a fuego" con una máscara |. 
O sea, como puso un compañero en este mismo hilo:
   resultado = resultado | ~(0xFF >> desplazamiento)
El compilador en el que probaste tu código seguramente ya esté haciendo un shift aritmético a la derecha también para números negativos y por eso ves que te queda el resultado que vos querías.
 
Saludos,
  Gustavo