Prueba con pregunta capciosa 1: escriba una función C que devuelva 0 si el procesador es Big_endian y 1 si es Little_endian.
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
retorno (c.b == 1); p>Método de almacenamiento de memoria de la CPU (asumiendo que el almacenamiento comienza desde la dirección 0x4000)
Contenido de la dirección de memoria
0x4000 0x78
0x4001 0x56
0x4002 0x34
0x4003 0x12
En modo bidireccional grande, el número 0x12345678 se almacena de la siguiente manera p>
En modo bidireccional grande, la memoria de la CPU se almacena El método
es el siguiente:
Contenido de almacenamiento de dirección de memoria
0x4000 0x12
0x4001 0x34
0x4002 0x56
p>0x4003 0x78
El orden de almacenamiento de Union es que todos los miembros se almacenan comenzando desde la dirección de las tierras bajas
, y la respuesta del entrevistador aprovecha esta característica. y concluye fácilmente
Si la CPU lee y escribe memoria en modo Little-endian o Big-endian
. Cualquiera que pueda dar esta respuesta en el acto es un programador genio.