Red de conocimiento informático - Aprendizaje de código fuente - 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.

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.

Respuesta: int checkCPU()

{

{

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.