大端字节序和小端字节序

注意:大端字节序就是网络序,小端字节序就是主机序,现在的计算机一般都是小端字节序。
大小端字节序的区别,只在于数据在计算机的存储顺序不同。
小端字节序:低地址处存放数据的低位,高地址处存放数据的高位。
大端字节序:低地址处存放数据的高位,高地址处存放数据的低位。

主机字节序的计算方式:

#include <stdio.h>
  
int main()
{
    int     a = 0x12345678;
    char    *p = NULL;

    p = (char *)&a;

    if(*p == 0x78)
    {
        printf("小端字节序\n");
    }

    if(*p == 0x12)
    {
        printf("大端字节序\n");
    }

    printf("p = %x\n", *p);

    return 0;
}

注意:系统的堆栈增长方向,堆是从低地址往高地址增长,栈是从高地址往低地址增长。局部变量是存放在栈中的,但是实际上也是从低地址往高地址增长,这是为什么?这是由于,栈的基本单位是栈帧,一个函数就是一个栈帧,栈帧的地址值是根据调用关系从高地址往低地址增长的,但是栈帧内(也就是函数内)的内存地址增长方向则是由编译器决定的,一般是从低地址往高地址。
参考:https://blog.csdn.net/weixin_42224577/article/details/115118561

posted @ 2023-02-08 13:10  一只小菜菜鸟  阅读(159)  评论(0)    收藏  举报