了解一下,大小端

我们先看一下整形在内存中的存储:

int main()
{
    int a = 20;
    int b = -10;
    system("pause");
    return 0;
}

a变量在内存中的存储:
这里写图片描述
b变量在内存中的存储:
这里写图片描述
从内存监视窗口中,我们得到两个信息:

  1. 对于a 和b 分别存储的是补码
  2. 顺序是倒着存放的

什么是大小端


了解一下,大小端_第1张图片
由图可知:

大端字节序存储:数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址中。
小端字节序存储:数据的低位保存在内存的低地址中,数据的高位保存在内存的高地址中。

设计一个程序判断当前机器的字节序


思路:取出变量的地址的第一位,如果是1,则说明是小端,否则,为大端。

int main()
{
    int a = 1;
    char *p = (char *)&a;
    if (*p == 1)
        printf("小端\n");
    else
        printf("大端\n");
    system("pause");
    return 0;
}

还可以封装为函数:

int check_sys()
{
    int a = 1;
    return (*(char *)&a);
}

int main()
{
    int ret = check_sys();
    if (ret == 1)
        printf("小端\n");
    else
        printf("大端\n");
    system("pause");
    return 0;
}

你可能感兴趣的:(C语言)