elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6]
51  Programación / Programación C/C++ / Re: Estudiando función que convierte a mayúscula un carácter con operadores de bit en: 1 Julio 2014, 02:09 am
Solo a modo de complemento al tema, quisiera añadir estos puntos de vista:

Analizando mas a fondo el código me he dado cuenta que los carácteres (A-Z) y (a-z ) todos los bits de estos son respectivamente iguales, excepto el sexto bit (contando desde la derecha)

a = 1100001     A = 1000001
b = 1100010     B = 1000010
c = 1100011     C = 1000011
d = 1100100     D = 1000100

Como pueden ver las minúsculas tienen el sexto bit a 1 y las mayúsculas a 0 en consecuencia al aplicarle el operador & con la mascara de bit apropiada logramos apagar el sexto bit y dejar los demás intactos obteniendo así su equivalente en mayúscula

1101 1111   <== Mascara de bit
&
0110 0001   <== a en binario
------------
0100 0001   <== A en binario

52  Programación / Programación C/C++ / Re: Estudiando función que convierte a mayúscula un carácter con operadores de bit en: 30 Junio 2014, 20:15 pm
No es necesario en lo absoluto, es una forma de hacerlo, una resta de 0x20=32 a la letra en minuscula tambien daria el resultado esperado.

Excelente mas claro ni el agua xD, tema resuelto
53  Programación / Programación C/C++ / Re: Estudiando función que convierte a mayúscula un carácter con operadores de bit en: 30 Junio 2014, 19:46 pm
@Eternal Idol gracias por tu respuesta, solo una consulta mas porque es necesario invertir los bits de 0x20
54  Programación / Programación C/C++ / Estudiando función que convierte a mayúscula un carácter con operadores de bit en: 30 Junio 2014, 17:46 pm
Hi la función en cuestión es esta:

Código
  1. void upper_case(char *src)
  2. {
  3.    while (*src != '\0')
  4.    {
  5.        if (islower(*src))
  6.  *src = (*src & ~0x20);
  7.        src++;
  8.    }
  9. }

No logro entender esta linea del código:

Código
  1. *src = (*src & ~0x20);

Se que el operador ~ invierte cada bit del 0x20 (i.e 32) convirtiéndolo al numero binario -11111 == -31. Supongamos que *src = 'a' al aplicar el operador &

Código
  1. 1100001
  2. -0011111
  3. _______
  4. 0000001

El resultado no es lo esperado que seria el binario 1000001 == 65 alguien podría explicarme que pasa aquí o acaso al usar el operador & sobre binarios negativos tiene otro efecto..
Páginas: 1 2 3 4 5 [6]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines