查看内存是大端存储还是小端存储

导读: 突然想看一下我的计算机是大端存储还是小端存储。实践来看一下。

首先明确配置的几个参数:
  • 处理器 Intel Core i7
  • 64位处理器
  • clang编译器
  • c语言编写
  • int占四字节
再明确几个概念:

大端存储:数据高位在内存低位, 数据低位在内存高位
小端存储:数据高位在内存高位, 数据低位在内存低位

例如内存地址为0x004FFC3C 里面存储的数据0x12345678

数据高位和低位 数据是按照字节为单位显示: 12为高位,依次是34,56,78
内存高位和低位 内存地址0x004FFC3C:从低位到高位依次为0x004FFC3C、0x004FFC3D、0x004FFC3E、0x004FFC3F。

大端存储模式 小端存储模式
12(数据高位) - 0x004FFC3C(内存低位) 78 (数据高位) - 0x004FFC3C(内存低位)
34 --- 0x004FFC3D 56 --- 0x004FFC3D
56 --- 0x004FFC3E 34 --- 0x004FFC3E
78 --- 0x004FFC3F 12 --- 0x004FFC3F
验证代码:
#include 

int main(int argc, const char * argv[]) {
    int x = 0x12345678;
    char x0, x1, x2, x3;
    x0 = ((char*)&x)[0];  //低地址单元
    x1 = ((char*)&x)[1];
    x2 = ((char*)&x)[2];
    x3 = ((char*)&x)[3]; //高地址单元
    printf("x0 = %x, x1 = %x, x2 = %x, x3 = %x", x0, x1, x2, x3); //x0 = 78, x1 = 56, x2 = 34, x3 = 12
    printf("\n");
    
    return 0;
}

x0 = 0x78 数据低位在内存低位可以看出是小端模式。

你可能感兴趣的:(查看内存是大端存储还是小端存储)