short a = 0x1234;
char *p = &a;
printf("%x%x", *p, *(p+1));
output
3412
我很好奇内存如何存储值0x1234。我首先认为0x1234在内存中另存为0x3412(每字节反转),但是根据lsb 0编号,似乎内存将0x1234另存为0x2c48(每比特反转)我认为值0x1234在内存中另存为0x2c48, little-endian cpu将0x2c48视为0x1234。这是正确的吗?
在little-endian系统上,多字节字以相反的byte顺序存储。
例如16位字0x1234
将与0x34
存储在低地址,0x12
存储在高地址。
作为字节数组,应该是
uint8_t word[2] = { 0x34, 0x12 };
字节的位永不反转。