对于这样一个程序
int main() {
int a = 0x11223344;
return 0;
}
结果我们发现随着地址升高,a中的数据反而是倒着存的
这是为什么?这里就涉及到了大小端存储方式
大小端是指的两种存储方式:
- 大端字节序存储
- 小端字节序存储
字节序:按照字节为单位去排顺序
在a=0x11223344中,右边是低位字节,左边是高位字节
优势:便于人去识别,有利于人
优势:CPU运算时从内存中依顺序依次从低位到高位取数据进行运算,更有利于CPU
设计一个程序来判断当前机器的字节序
#include<stdio.h>
int main() {
int a = 1;
//00000000000000000000000000000001
//0x 00 00 00 01 或者 0x 01 00 00 00
char* p = (char*)&a; // 利用char指针访问权限只有一个字节
if (*p == 1) {
printf("小端字节序存储\n");
}
else {
printf("大端字节序存储\n");
}
return 0;
}