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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Memoria en campos de bits
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Memoria en campos de bits  (Leído 3,733 veces)
Shon

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Memoria en campos de bits
« en: 31 Julio 2010, 18:00 pm »

Hola,

Código
  1. /*
  2.  * campos de bits
  3.  */
  4. #include <stdio.h>
  5.  
  6. struct palabra {
  7. unsigned car_ascii : 7;
  8. unsigned bit_paridad : 1;
  9. unsigned operacion : 5;
  10. unsigned : 18;
  11. unsigned bit_signo : 1;
  12. };
  13.  
  14. int main(int argc, char *argv[]) {
  15. struct palabra cb = {'C', 1, 0x1E, 0};
  16.  
  17. printf("campos de bits: %x\n\n", cb);
  18. printf("bit signo %x\n", cb.bit_signo);
  19. printf("operacion : %x\n", cb.operacion);
  20. printf("bit de paridad: %x\n", cb.bit_paridad);
  21. printf("caracter %c : %x\n", cb.car_ascii, cb.car_ascii);
  22.  
  23. return 0;
  24. }
  25.  

Alguien sabría explicarme porque este programa da este resultado:

campos de bits: 1ec3

bit signo 0
operacion : 1e
bit de paridad: 1
caracter C : 43


No me entra en la cabezota como hace las asignaciones y la ordenación en memoria


En línea

Komodo


Desconectado Desconectado

Mensajes: 352



Ver Perfil
Re: Memoria en campos de bits
« Respuesta #1 en: 31 Julio 2010, 18:23 pm »

Haber lo primero sabes que %x saca un entero en base hexadecimal

si cogemos ese 43 (C) y lo ponemos en modo Decimal da: 67 y eso es el valor ASCII de C.

espero haberte despejado algo



En línea


Shon

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Memoria en campos de bits
« Respuesta #2 en: 31 Julio 2010, 18:45 pm »

Si, eso lo sé; lo que mas me lía es la ordenación en memoria.

dir. baja  ----------------------------- dir. alta
----------------------------------------------
11000011000111100000000000000000

Así es como lo almacena en memoria y no tengo ni idea como lo hace

Un saludo
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Memoria en campos de bits
« Respuesta #3 en: 31 Julio 2010, 21:01 pm »

¡Buenas!

Aqui tienes informacion sobre los campos de bits. En particular el apartado 6 explica las reglas que se utilizan para alinear los campos en la memoria.

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
4 gb de memoria en Windows de 32 bits
Hardware
fran7385 8 3,942 Último mensaje 24 Enero 2014, 13:48 pm
por dato000
campos de bits « 1 2 »
Programación C/C++
michael_753 12 9,629 Último mensaje 5 Octubre 2023, 19:42 pm
por RayR
campos de bits + punteros + macros
Programación C/C++
michael_753 1 1,807 Último mensaje 24 Octubre 2023, 14:12 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines