1、什么是大小端
大小端:是指在计算机系统中,多字节数据(如整数、浮点数等)存储顺序的不同而不同的称呼。
在计算机内存中,数据是以字节为单位存储的。对于多字节数据,如4字节的整数,存储的时候需要选择一个字节作为起始位置,并按照一定的顺序存储字节。
大端:是指高位字节在前、低位字节在后的存储方式。
就是整数的高位字节存储在低地址中,低位字节存储在高地址中。类似于大端法的读书方式,从书的开头按照顺序读取每个字节。
小端:是指低位字节在前、高位字节在后的存储方式。
就是整数的低位字节存储在低地址中,高位字节存储在高地址中。类似于小端法的读书方式,从书的结尾倒着读取每个字节。
使用int a=0x11223344为例子
大小端存储模式的选择主要取决于计算机体系结构和操作系统的设计。不同体系结构和操作系统可能选择不同的存储模式。
2、怎么判断一个系统的大小端
int judgment() {
int num = 1;
// 将int类型的变量的地址转换为char类型的指针
char* ptr = (char*)#
// 判断指针所指向的值,如果为1则为小端存储,否则为大端存储
return *ptr;
}
int main() {
if (judgment()) {
printf("Little Endian\n");
}
else {
printf("Big Endian\n");
}
return 0;
}
主要是通过每个变量的字节不int是4个字节同然后通过强行转(char是一个字节存储不下int的4个字节就会存储int类型的第一个字节),转化变量让后通过调试观察char类型即可。
由上图可知较大的数在前面所以VScode是一个小端的编译器。