大小端模式:字节顺序的奥秘

对于16位、32位等位数更高的处理器,由于寄存器宽度大于1字节,必然存在如何安排多字节的问题,因此导致了大端存储模式(big-endian)和小端存储模式(little-endian)的产生。

大小端模式在处理器访问内存时用于描述寄存器的字节顺序和内存中的字节顺序之间的关系。

如一个16位的short类型变量X在内存中的地址为 0x0010,X的值为0x1122,其中,0x11为高字节,0x22为低字节。

  • 对于大端模式,就将0x11(高位)放在低地址中,将0x22(低位)放在高地址中。
  • 对于小端模式,就将0x11(高位)放在高地址中,将0x22(低位)放在低地址中。

很多的 ARM 处理器默认使用小端模式,有些 ARM 处理器还可以由硬件来选择是大端模式还是小端模式。Cortex-A 系列的处理器可以通过软件来配置大小端模式。

如何判断处理器是大端模式还是小端模式?

使用联合体(union),其存放顺序是所有成员均从低地址开始存放,利用该特性可以轻松判断 CPU 对内存采用大端模式还是小端模式读写。

c 复制代码
#include <stdio.h>
bool checkCPU(void)
{
	union w
	{
		int a;
		char b;
	}c;
	c.a = 1;
	return (c.b==1);
}
int main()
{
	printf("%d\n", checkCPU());
	return 0;
}

以上代码如果输出1则说明为小端模式(低字节存到高地址),否则为大端模式(低字节存到了低地址)。

相关推荐
myy-learn9 分钟前
31-TCP并发
服务器·网络·tcp/ip
名字还没想好☜15 分钟前
Docker buildx 多架构镜像实战:一次构建 amd64+arm64,告别 exec format error
运维·docker·eureka·架构·kubernetes
智购科技无人售货机厂家32 分钟前
2026自动售货机备用电池管理系统设计:从充放电保护到健康监测的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信
小雪崩34 分钟前
嵌入式学习 day39:TCP并发服务器模型
linux·服务器·c语言·网络·学习·tcp/ip
智购无人售货机厂家41 分钟前
2026自动售货机软硬件版本管理策略:从版本号规范到兼容性矩阵的工程实践~YH
运维·服务器·人工智能·单片机·嵌入式硬件·线性代数·矩阵
spencer_tseng1 小时前
[j2cache ehcache.xml]/tmp/.ehcache-diskstore.lock (Permission denied)
xml·linux·python·ehcache·[j2cache
内核笔记1 小时前
休眠唤醒 standby 调试
linux·bsp
小白不想画工图1 小时前
银河麒麟V10系统安装QT5.12
linux·开发语言·qt·银河麒麟
bksczm1 小时前
Linux 五种 I/O 模型与多路复用详解
运维·服务器·网络
wjcroom1 小时前
FileBrowser的docker运行了改变密码长度的做法
运维·docker·容器