内存大小端

嵌入式快充:内存大小端

一、大小端概念

目前大多数计算机中,存储的基本单元是一个字节,对应着8位长度,当存储8位以上的单元,比如:字(16位)、双字(32位)时,他们是拆分成8位进行存储的,因为存储空间是一个连续的地址,如果我们要存储一个16进制的数,他可以分为高8位字节和低8位字节数据,如果高8位字节的数据放在高地址,低位8位数据放在低地址,为小端存储,相反如果高8位数据放在低地址,低8位数据放在高地址,则为大端存储,具体可以由下图表示:

请添加图片描述

二、使用C判断当前机器大小端

使用C语言判断大小端,我们可以先定义一个16位的已知数据,使用一个char指针强制指向已知数据的地址(指向的是低地址),然后我们以16进制打印指针指向地址的数据

#include <stdio.h>
int main(void)
{
    unsigned short u16;
    unsigned char* u8;
    u16 = 0x1234;
    u8 = (unsigned char*)&u16;
    printf("%x",*u8);
    return 0;
}

运行后结果如下

20210802225217

可以看到打印的是0x34,对应的是0x1234的低地址数据,所以当前计算机的存储方式为小端存储

posted @ 2021-08-02 23:05  JeckXu666  阅读(136)  评论(0编辑  收藏  举报