Архитектурные вопросы, такие как представление (размер слова, два - один комплемент против величины знака) и порядковый номер, лучше всего решаются с помощью документации по аппаратному обеспечению и / или ОС и / или компилятору.
Вы можете использовать тип punning для проверки отдельных байтов значения:
T value = ...; // for some numeric type T (int, short, long, double, float, etc.)
unsigned char *p = (unsigned char*) &value;
size_t i;
printf("%10s%8s\n", "address", "value");
printf("%10s%8s\n", "-------", "-----");
for (i = 0; i < sizeof value; i++)
printf("%10p%8x\n", p+i, (unsigned int) p[i]);
Для старшего и младшего байтов вы можете сделать что-то вроде
unsigned int value = 0x01;
unsigned char *p = (unsigned char *) &value;
if (p[0] == 1)
printf("Little-endian\n");
else if (p[sizeof value - 1] == 1)
printf("Big-endian\n");
else
printf("Weird\n");
Хотя лучше до RTM.