小尾数处理器如何在C的内存中保存数字?

问题描述 投票:0回答:1
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。这是正确的吗?

c endianness
1个回答
0
投票

在little-endian系统上,多字节字以相反的byte顺序存储。

例如16位字0x1234将与0x34存储在低地址,0x12存储在高地址。

作为字节数组,应该是

uint8_t word[2] = { 0x34, 0x12 };

字节的位永不反转。

© www.soinside.com 2019 - 2024. All rights reserved.