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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  De minúscula a mayúscula a nivel de bits (lenguaje C.)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: De minúscula a mayúscula a nivel de bits (lenguaje C.)  (Leído 3,919 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
De minúscula a mayúscula a nivel de bits (lenguaje C.)
« en: 18 Marzo 2014, 22:53 pm »

Hola a todos.

Lenguaje………………..: "C"

Sistema operativo.….: Windows XP

Compilador……………..: MinGW

Problema………………..:Esta estructura puede tener el mismo problema que plantea rir3760 en este post. 
                              http://foro.elhacker.net/programacion_cc/operadores_a_nivel_de_bits_lenguaje_c-t410671.0.html
                                                        
Error…………….…….….: Ninguno.

Otras Observaciones..:http://foro.elhacker.net/programacion_cc/de_minuscula_a_mayuscula_a_nivel_de_bits_en_lenguaje_c-t405856.0.html


Código…………………….:


//Con uniones y campos de bit.

Código
  1. #include <stdio.h>
  2.  
  3. union caracteres
  4. {
  5. unsigned char c;
  6. struct c_bits
  7. {
  8. unsigned b0:1;
  9. unsigned b1:1;
  10. unsigned b2:1;
  11. unsigned b3:1;
  12. unsigned b4:1;
  13. unsigned b5:1;
  14. unsigned b6:1;
  15. unsigned b7:1;
  16. } bits;
  17. };
  18.  
  19. int main(void){
  20. union caracteres caracter = {110};
  21.  
  22. printf("\n\n union caracteres caracter = {110};");
  23. printf("\n\n La variable caracter contiene la letra...: \"%c\"", caracter.c);
  24.  
  25. printf("\n\n caracter.bits.b5 = 0; //Apaga el bits 5 para que la letra 'n' se transforme en 'N'");
  26. caracter.bits.b5 = 0;
  27. printf("\n\n Ahora la variable caracter contiene la letra...: \"%c\"", caracter.c);
  28.  
  29. printf("\n\n");
  30. return 0;
  31. }
  32.  

//Con máscaras y operaciones a nivel de bit.

Código
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. char letra = 'n';
  5.  
  6. printf("\n\n char letra = 'n';");
  7. printf("\n\n La variable letra contiene la letra...: \'%c\'", letra);
  8.  
  9. letra &=0xDF;
  10. printf("\n\n letra &=0xDF; // 0xDF es en binario = 1101 1111 --> pones a 0 el bit 5");
  11.  
  12. printf("\n\n Ahora la variable letra contiene la letra...: \'%c\'", letra);
  13.  
  14. printf("\n\n");
  15. return 0;
  16. }
  17.  

Saludos y como siempre muchas gracias.
Daniel 


« Última modificación: 18 Marzo 2014, 23:14 pm por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: De minúscula a mayúscula a nivel de bits (lenguaje C.)
« Respuesta #1 en: 18 Marzo 2014, 22:58 pm »

??? que intentas?


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: De minúscula a mayúscula a nivel de bits (lenguaje C.)
« Respuesta #2 en: 20 Marzo 2014, 15:22 pm »

Por lo visto, restar 32 decimal, o sea 0x20, para pasar del código ASCII de letra mayúscula al de la respectiva minúscula. Para eso anulas el bit 5, que puedes hacer con una máscara. Revisando los códigos ASCII de todos los caracteres en mayúscula, van desde 0x61 hast 0x7A y todos poseen el bit nro. 5 en '1', por lo tanto es válido restar de este modo (hubiera sido un problema si el bit5 fuera '0', pero esto no sucede).
En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: De minúscula a mayúscula a nivel de bits (lenguaje C.)
« Respuesta #3 en: 20 Marzo 2014, 15:37 pm »

Sinó puedes hacer un XOR para ese bit, que quedaría "var ^ 32;" si no me equivoco.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: De minúscula a mayúscula a nivel de bits (lenguaje C.)
« Respuesta #4 en: 21 Marzo 2014, 02:44 am »

//Con uniones y campos de bit.

Código
  1. #include <stdio.h>
  2.  
  3. union caracteres
  4. {
  5. unsigned char c;
  6. struct c_bits
  7. {
  8. unsigned b0:1;
  9. unsigned b1:1;
  10. unsigned b2:1;
  11. unsigned b3:1;
  12. unsigned b4:1;
  13. unsigned b5:1;
  14. unsigned b6:1;
  15. unsigned b7:1;
  16. } bits;
  17. };
La mayoría de las características de los campos de bits son "implementation defined" eso mas el detalle de dar por sentado ocho bits por byte (lo usual pero pueden ser mas, mejor usar la macro CHAR_BIT de <limits.h>).

Para el caso la recomendación es utilizar toupper, tolower, etc. cortesía de <ctype.h>, portable y sencillo.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
convertir txt a mayuscula minuscula mayuscuala...
Programación Visual Basic
4D1cTo 4 6,027 Último mensaje 18 Junio 2006, 15:10 pm
por Hadess_inf
Convertir cadena minuscula en mayuscula
Programación C/C++
delirio 3 13,810 Último mensaje 28 Noviembre 2010, 04:36 am
por delirio
[Python] - Ejercicio de Mayúscula y Minúscula
Scripting
ChicoMaravilla 2 12,835 Último mensaje 3 Diciembre 2010, 02:17 am
por ChicoMaravilla
convertir minúscula a mayúscula « 1 2 »
Programación C/C++
m@o_614 10 48,342 Último mensaje 24 Abril 2017, 12:31 pm
por NikNitro!
De minúscula a mayúscula a nivel de bits en lenguaje C. « 1 2 3 4 »
Programación C/C++
DanielPy 32 17,187 Último mensaje 4 Enero 2014, 19:12 pm
por leosansan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines