Hola,
/*
* campos de bits
*/
#include <stdio.h>
struct palabra {
unsigned car_ascii : 7;
unsigned bit_paridad : 1;
unsigned operacion : 5;
unsigned : 18;
unsigned bit_signo : 1;
};
int main(int argc, char *argv[]) {
struct palabra cb = {'C', 1, 0x1E, 0};
printf("campos de bits: %x\n\n", cb);
printf("bit signo %x\n", cb.bit_signo);
printf("operacion : %x\n", cb.operacion);
printf("bit de paridad: %x\n", cb.bit_paridad);
printf("caracter %c : %x\n", cb.car_ascii, cb.car_ascii);
return 0;
}
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
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
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
¡Buenas!
Aqui (http://www.zator.com/Cpp/E4_6.htm) 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!