大小端

2021/01/31 07:50
阅读数 42

假如有一个4字节的数据为 0x12 34 56 78(0x12为高字节,0x78为低字节),若将其存放于地址0x10002000中,则有:

内存地址:0x10002000(低地址) 0x10002001 0x10002002 0x10002003(高地址)用于存放
则:
大端模式 0x12(高字节)放在0x10002000(低地址),0x78(低字节)放在0x10002003(高地址)


小端模式 0x78(低字节)放在0x10002000(低地址),0x12(高字节)放在0x10002003(高地址)

Ps:大端“高低低高”,小端“高高低低”

大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
大端模式优点:符号位在所表示的数据的内存的第一个字节中,便于快速判断数据的正负和大小
小端模式优点:1. 内存的低地址处存放低字节,所以在强制转换数据时不需要调整字节的内容(注解:比如把int的4字节强制转换成short的2字节时,就直接把int数据存储的前两个字节给short就行,因为其前两个字节刚好就是最低的两个字节,符合转换逻辑); 2. CPU做数值运算时从内存中依顺序依次从低位到高位取数据进行运算,直到最后刷新最高位的符号位,这样的运算方式会更高效。
大小端的检测
可以通过指针检测,代码如下:




int Check_Endian()
{
    int a = 1;
    char p = (char)&a;
    return p;//**1的二进制表示为00000001,大端则返回0,小端则返回1**
}
int main()
{
    int ret=Check_Endian();
    if (1 == ret)
    {
        printf("小端\n");
    }
    else
    {
        printf("大端\n");
    }
    return 0;
}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部