如何判断计算机存储机制?

我们都知道现存计算机存储机制有两种big-endian和little-endian。两者区别在于多字节数据在内存中的存储顺序不一样。

big-endiian:高字节存储在低位,而little-endian则高字节存储在低位。就如一个32位无符整型0xABCDEF12在内存中的表示

big-endian

AB CD EF 12
little-endian

12 EF CD AB

正是根据这个不一样,我们可以写代码来区分他们并判断出自己PC机的机制。

/*************************************************
 * copyright (c) 2012--2013
 * E-mail: [email protected]
 * QQ    : 383569614
 *isBig.c:判断你的PC机存储机制,大端(Big-Endian):高字节存储低位
 *        还是小端(little-Endian):高字节存储高位
 ************************************************/
#include <stdio.h>

int isBig();

int main(int argc,char *argv[],char**env)
{
    if(isBig())
    {
        printf("Your PC ---> Big-Endian\n");
        return 0;
    }
    printf("Your PC ----> little-Endian\n");
    return 0;
}

//如果是大端返回1否则返回0
int isBig()
{
    unsigned int val=0xABCDEF12;
    unsigned char *pval=(unsigned char*)&val;
    return 0xAB==*pval;
}

你可能感兴趣的:(big-endian,little-endian)