大端数(big-endian)和小端数(little-endian)这两个中文会让人绕晕,从英文上是比较好理解的
首先从内存单元上来看 排列顺序是这样的,也就是从下往上增长,从右往左增长,当一个指针指向一个int型(四内存单元)的变量时,指针的地址是地址最低的内存单元
big-endian:大的部分(数的高位)在存储单元的尾部
little-endian:小的部分(数的低位)在存储单元的尾部
最右边是尾部
所以就很好理解了,对于一个数int a=0x01020304
内存地址 | 0x00000004 | 0x00000003 | 0x00000002 | 0x00000001 |
---|---|---|---|---|
big-endian | 04 | 03 | 02 | 01 |
little-endian | 01 | 02 | 03 | 04 |
验证机器是big-endian还是little-endian
void main(){
int a=0x01020304;
cout<< (int)(*((char*)(&a)))<<endl; //取出最低位验证是01还是04即可
}