检查系统是大端还是小端模式

在计算机系统中,规定:每个地址单元都会对应一个字节(8个bit),但是,在c语言中,除了有一个字节(8个bit)的char,也有两个字节(16个bit)的short,也有四个字节(32个bit)的long(在不同的编译器下可能不同)。对于16位或者32位的处理器,即就是大于8位的处理器,由于寄存器的宽度大于一个字节,那么就存在如何将一个多字节的变量的数据如何存放的问题——所以,就有了大小端之分。

首先,应该明确的是:

数据有高位和低位之分 
地址有低地址和高地址之分

大小端的理解:

小端:将数据的低位存放在低地址处,将数据的高位存放在高地址处。 
大端:将数据的低位存放在高地址处,将数据的高位存放在低地址处。

所以可以定义一个int变量,将其地址强制为char *型地址,检测该地址中的数据若是int变量的最低字节,则是小端机,反之则为大端机。代码如下:

1

2

3

4

5

6

7

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

int main(void){

    int n=1;

    printf(*(char *)&n ? "小端\n" "大端\n");

    return 0;

}

猜你喜欢

转载自blog.csdn.net/fsfsfsdfsdfdr/article/details/82695014