c语言复习之判断机器的大小端存储

一、什么是大小端存储模式呢?
这个问题呢就像吃egg一样,那么到底是从小头剥还是从大头剥呢?那我们就来分析一下再剥喽~
所谓大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位保存在内存的高地址中;
小端模式则是指数据的高位存放在内存的高地址中,数据的低位则存放在内存的低地址中;
也许这样你还是有点迷糊,没关系,我刚开始也迷糊,总是记混,那么下面我们用图分析一下
这里写图片描述
二、那怎么用代码判断机器是大端存储还是小端存储模式呢???
这里我们总结了三种方法,直接抛代码~
利用联合Union的特性:“联合的成员共用同一块空间”
方法一:

int Check()
{
    union UN
    {
        char c;
        int i;
    }un;
    un.i = 1;//0x00000001 如果是小端存储的话1应该表示为0x10000000
    return un.c;
}

方法二也是利用联合体:

int Check()
{
    union UN
    {
        char a[4];
        int i;
    }un;
    un.i = 1;
    printf("%02hhx%02hhx%02hhx%02hhx\n", un.a[0], un.a[1], un.a[2], un.a[3]);
  //02表示整数不够2位就补0  
  //x是以16进制输出
  //hhx表示只输出两位
    return un.a[0];
}

方法三:对类型进行强制转化

int Check()
{
    int i = 1;
    i = *(char*)&i;
    return i;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值