编程区分CPU大小端

举报
CodeAllen 发表于 2021/10/29 23:25:14 2021/10/29
【摘要】 编程区分CPU大小端 编写一段代码判断系统中的CPU是小端还是大端模式?方法1:将一个字节的数据和一个整型数据存放于同样的内存的开始地址方法2;union成员本身被存在相同的内存空间(共享内存) ...


编写一段代码判断系统中的CPU是小端还是大端模式?

方法1:将一个字节的数据和一个整型数据存放于同样的内存的开始地址

通过读取整数数据,分析字节在整型数据的高位还是地位来判断CPU工作于小端还是大端

        大端认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节)
        小端正相反,认为第一个字节是最低位字节(低地址到高地址存放数据的低位字节到高位字节)

  
 

一般来说X86是小端字节序(常见),PowerPC是大端

#include <stdio.h>

typedef unsigned char BYTE;

int main()
{
    unsigned int num, *p;
    p = &num;
    num = 0;

    *(BYTE *)p = 0xff;

    if (num == 0xff) {
        printf("The endian of cpu is little\n");
    } else {
        printf("The endian of cpu is big\n");   //num = 0xff000000
    }

    return 0;
}
/*
The endian of cpu is little
*/

  
 
方法2;union成员本身被存在相同的内存空间(共享内存)
#include <stdio.h>

int checkCPU()
{
    union w
    {
         int a;
         char b;
    } c;

    c.a = 1;

    return (c.b == 1);
}

int main()
{
    int is;
    is =checkCPU();

    if (is == 1) {
        printf("The endian of cpu is little\n");
    } else {
        printf("The endian of cpu is big\n");
    }

    return 0;
}

/*
The endian of cpu is little
*/

  
 

关注我

我的首发平台是【CodeAllen】,欢迎关注并回复“1024”进入资料群获取免费学习资料

在这里插入图片描述

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/107126171

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。