CPU大小端判定

大小端模式判定方法

C 语言方法实现:


#include 
#include 
#include 

int Is_Little_mode(void);

int main(void)
{
    if(Is_Little_mode())
        puts("The CPU is little mode");
    else
        puts("The CPU is big mode");
    return 0;
}

int Is_Little_mode(void)
{
    typedef union{
        int i;                      // 占据四个字节的空间 
        unsigned short int sh;      // 和 i 共用一片存储区域 ,对它的引用 将会 解释 低两个字节 的内容
        unsigned char a;            
    }mode_t;

    mode_t adt;

    adt.i = 0xffffbeaf;
    return (adt.sh==0xbeaf);
}

结果是:

The CPU is little mode


值得注意的是:

1 . union 联合体的变量之间的特性

所有的变量共用一片存储区域,区域的大小取决于 所有变量中最大的那个变量的内存需求 。

2 . 大小端模式判定方法: 小端模式: 低地址,低字节,高地址,高字节; 大端模式: 低地址,高字节,高地址,低字节;

对于 int i = 0xabcdefhi ; 低字节 ——> 高字节 :hi , ef , cd , ab ;

对于 short int sh,占据内存的低两个字节,要是 sh 的值为 efhi ,则证明是 小段模式 , 否则是大段模式。

你可能感兴趣的:(C/C++)