什么是低位字节、高位字节、小端序、大端序?
·
概述:在实际开发过程中,只要是和硬件打交道,就会经常碰到小端序、大端序的概念,故作此纪录
首先以上几个关键字都是计算机存储和数据表示中的重要概念,务必要掌握
在计算机系统中,一个多字节数据(如:uint16、uint32、uint64等)通常被划分为多个字节。
1、低位字节与高位字节
- 低位字节(Least Significant Byte, LSB):是指数值中权重最低的字节,即对数值影响最小的部分。
- 高位字节(Most Significant Byte, MSB):是数值中权重最高的字节,对数值影响最大。
举例:对于16位整数 0x2357而言,在硬件中会被拆分为0x23和0x57两个部分,其中0x57权重最低,为低位字节;而0x23权重最高,为高位字节
2、多字节数据在内存中的存储方式(小端序、大端序)
- 小端序(Little-Endian):低位字节存储在低地址端,高位字节存储在高地址端。
- 大端序(Big-Endian):高位字节存储在低地址端,低位字节存储在高地址端。
举例:对于16位整数 0x2357而言,若按小端序进行排列,那么在内存中应为57 23;若按大端序进行排列,那么在内存中应为23 57。
例:uint32_t value = 0x12345678;
// 小端序
内存地址: 0x1000 0x1001 0x1002 0x1003
存储内容: 0x78 0x56 0x34 0x12
↑低位 ↑ ↑ ↑高位
// 大端序
内存地址: 0x1000 0x1001 0x1002 0x1003
存储内容: 0x12 0x34 0x56 0x78
↑高位 ↑ ↑ ↑低位
更多推荐

所有评论(0)