大小端
小端存储:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,存储模式将地址的高低和数据位权有效地结合起来。
大端存储:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,大端存储符合我们对数据的认识
图示
以32位系统,以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit,以十进制数123321为例,转化为二进制为0000 0000 0000 0001 1110 0001 1011 1001
更直观地表示为16进制为
如何判断计算机是大端存储还是小端存储?
使用指针
判断高位地址是否储存低位数据
#include<stdio.h>
int main() {
short int x = 1;
char *c = (char*)&x;//对x取地址,取第一个高位地址
if (*c) {//判断高位地址是否储存低位数据
printf("小端 (Little Endian)\n");
} else {
printf("大端 (Big Endian)\n");
}
return 0;
}
使用联合体
#include<stdio.h>
union test{
char c;
int a;
}T;
int main() {
T.a = 1; // 初始化联合体的 int 成员
if (T.c) {//判断高位地址是否储存低位数据
printf("小端 (Little Endian)\n");
} else {
printf("大端 (Big Endian)\n");
}
return 0;
}
一般计算机普遍采用小端存储
其他博客地址: