Representación binaria de una matriz de caracteres
Tengo unión, que consta de 8 campos de uint8, 2 campos de int32 o un int64.
Estoy intentando guardar un array de 8 valores allí: 0, 0, 0, 1, 0, 0, 0, 1
Hay un error en el software que estoy tratando de resolver, desafortunadamente no entiendo la representación binaria de este array.
Mi unión:
union {
uint8_t u08[8];
uint32_t u32[2];
uint64_t u64;
} data;
La salida de mi depurador:
Nombre: u08
Detalles: “\0\0\0\001\0\0\0\001”
Por defecto: 0x4001e6a0 <ucheap+66948>
Decimal: 1073866400
Hexadecimal: 0x4001e6a0
Binario: 1000000000000011110011010100000
Octal: 010000363240
Nombre: u32
Detalles: {1, 1}
Por defecto: 0x4001e6a0 <ucheap+66948>
Decimal: 1073866400
Hexadecimal: 0x4001e6a0
Binario: 1000000000000011110011010100000
Octal: 010000363240
Nombre: u64
Detalles: 4294967297
Por defecto: 4294967297
Decimal: 4294967297
Hexadecimal: 0x100000001
Binario: 100000000000000000000000000000001
Octal: 040000000001
Mis preguntas son:
1. ¿Por qué un u64 tiene un valor diferente a los demás? Según mi entendimiento, en C se reserva espacio solo para una variable de una unión para almacenar el valor.
2. ¿Qué significa esta representación binaria del arreglo de uint8? Incluso si fuera ASCII (que no lo es, ya que estoy enviando valores directos, no caracteres), entonces ‘0’ sería 110000 y ‘1’ sería 110001
Estoy utilizando el MPC5748G de NXP con S32DS (un IDE basado en Eclipse) para la depuración.</ucheap+66948></ucheap+66948>
davy.ai