大端 小端

时间:2021-08-14
本文章向大家介绍大端 小端,主要包括大端 小端使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么是大端小端:

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中;

如:
int a = 20;

00000000000000000000000000010100

数据

0x 00 00 00 14

高位---------低位

内存

小端

 14 00 00 00

低地址--高地址

大端

 00 00 00 14

低地址--高地址

写一段代码告诉我们当前机器的字节序是什么:

#include<stdio.h>

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

下面我们来改进一下这段代码,用函数来实现

#include<stdio.h>

int check_sys()
{
    int a = 1;
    char* p = (char*)&a;
    if(*p == 1)
        return 1;
    else
        return 0;
}

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

去掉 if 语句

#include<stdio.h>

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

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

改进解引用

#include<stdio.h>

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

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

这样我们就得到了最优的代码了,运行结果如下:

 可知我们当前的机器字节序为小端

原文地址:https://www.cnblogs.com/st1379/p/15140469.html