我有一本教科书上写着:
重要的是要理解,在大端和小端系统中,数值为 6 的 32 位整数由最右边(低位)3 位中的位 110 表示。一个字和最左边 29 位中的零。
这个准确吗?
确实如此,如果您有
32-bit
数据类型。位xxxx....110
将永远是6
。
对于小端和大端之间的内存表示(字节级)而言,情况并非如此。在小端字节序中,LSB 字节在前,MSB 在后。
想象一个 32 位数字,在
uint32_t
变量中,它保存诸如 b1<<24 | b2<<16 | b3<<8 | b4
之类的值,其中 bx
是一个字节。
b1,b2,b3,b4
b4,b3,b2,b1