1、什么是大小端?
所谓的大端模式、小端模式,指的是数据在内存中的存储顺序。是大端还是小端主要取决于CPU,而与操作系统和编译器无关!
大端模式:数据的高字节存储在内存的低地址,低字节存储在内存的高地址;
小端模式:数据的高字节存储在内存的高地址,低字节存储在内存的低地址。
我一般记小端:低放低,高放高。
2、如何编程判断大小端?
(1)思路:大数据类型给小数据类型赋值的时候会发生截断的现象,也就是说,赋值时会将低地址的数据截断赋值给小数据类型。
#include<stdio.h>
int main(void) {
short a = 0x0102;
char b = 0;
b = a; /*将发生截断,低地址的数据会赋值给字符型变量*/
if (b == 0x2)
printf("Little-Endian\n");
else
printf("Big-Endian\n");
return 0;
}
(2)思路:利用union联合体的成员共享存储单元的特点去判断
#include<stdio.h>
int main(void) {
union {
short a;
char b;
}u;
u.a = 0x0102;
if (u.b == 0x02)
printf("Little-Endian\n");
else
printf("Big-Endian\n");
return 0;
}
本文介绍了计算机中数据存储的大小端模式,大端模式将高字节存于低地址,小端模式则相反。通过编程示例展示了如何使用C语言判断系统是大端还是小端,包括两种不同的思路:一是利用赋值截断现象,二是使用union联合体。

3万+

被折叠的 条评论
为什么被折叠?



