Tratando de aclarar algo.Desplazamientos lógicos, aritméticos en bits
es mi entendimiento de que, con respecto a aritméticas, los cambios a nivel de bits lógicos:
<<
funcionan de la misma para ambos>>
turnos diferencian en que desplazamiento lógico será siempre byte de relleno con 0, mientras turno aritmética lo rellenará con el bit de signo.
¿Cómo puedo diferenciar esto usando C?
Por lo que entiendo, los operadores reales son los mismos <<
, >>
¿Cómo comandos difieren entre:
int i=1;
printf ("%d\n", i >> 1); // logical shift
int j=1;
printf ("%d\n", j >> 1); // arithmetical shift
por favor hágamelo saber,
¿Hay una manera de forzar un cambio en particular. Por ejemplo, me gustaría (x <<1)>> 1 para soltar el signo "-". – JAM
@Jerry, @mac: Ver actualización. – kennytm
@mac: Descartar el bit de signo no es lo mismo que tomar el valor absoluto valor en el complemento de dos. – jamesdlin