CPU大小端判断

Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节——大端);

而Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节——小端)。

C编程实现判断,代码如下:

/* 测试你的机器使用的大端模式,还是小端模式 */
/* 若x0=0x11,则是大端; 若x0=0x22,则是小端 */

#include<stdio.h>
int main()
{
    short int x = 0x1122;
    char *p = (char*)(&x);
    if(*p == 0x11)
        printf("big-endian(大端模式)\n");
    else
        printf("little-endian(小端模式)\n");
    return 0;
}

#include <stdio.h>
int main()
{
    short int x;
    char x1,x2;
    x = 0x1122;
    x1 = ((char *)&x)[0];    //低地址
    x2 = ((char *)&x)[1];    //高地址
    printf("x1=%x\n",x1);
    printf("x2=%x\n",x2);
    return 0;
}

若x1=0x11,则是大端; 若x1=0x22,则是小端......


共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。

union 型数据所占的空间等于其最大的成员所占的空间。对union 型的成员的存取都是相对于该联合体基地址的偏移量为0 处开始,也就是联合体的访问不论对哪个变量的存取都是从union 的首地址位置开始。

#include <stdio.h>  
union test  
{  
    int i;  
    char a;  
};  
int main()  
{  
    test Test;  
    Test.i = 0x00000001;;  
    if(Test.a == 1)  
    {  
        printf("小端模式");  
    }  
    else  
    {  
        printf("大端模式");  
    }  
    return 0;  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值