Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/10/2014, 02:21
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Decimal a binario con operador AND[C]

El problema que tiene el desplazamiento binario es que pierdes información. Si desplazas a la derecha, el bit más a la derecha se pierde y se crea un hueco a la izquierda... que se rellena con un '0' y lo mismo pasa con los desplazamientos a la izquierda.

Respondiendo a tu duda, si sabes que el 5º bit es el encargado de efectuar ese cambio puedes hacer lo siguiente:

Código C:
Ver original
  1. char letra='h';
  2. char mascara = 1 << 5; // esto es equivalente a 0x20 o 0100000
  3.  
  4. // Si aplicamos una operación XOR alternaremos entre mayúsculas y minúsculas
  5. letra ^= mascara;
  6. printf( "%c" letra); // Imprime H
  7.  
  8. // Si aplicamos una operación OR cambiaremos de mayúscuas a minúsculas
  9. letra |= mascara;
  10. printf( "%c" letra); // Imprime h
  11.  
  12. // Para apagar el bit hay que invertir la máscara y realizar una operación AND
  13. mascara ^= 0xFF;
  14. letra &= mascara;
  15. printf( "%c" letra); // Imprime H

Ahora mismo no puedo compilar, pero creo que el código está bien.