请详细说下这个函数怎么的判断大端小端
int checkSystem( ){
union check
{
int i;
char ch;
}c;
c.i = 1;
return (c.ch ==1);
}
我汇编学的很差,麻烦详细点,最好有图,谢谢!
亲!,其实,大端就是低地址存放低位数,高地址存放低位数,而小端则是高地址存放高位数,低地址存放低位数,下面就是判断大端与小端的一个程序,其中有两个判断的方法,我用宏注释把另外一个注释了,如果想运行一个的话,只要把if中的0改为1就行了,上面也有我的必要的注释和解释,你看一下,看能不能看懂:
#include<stdio.h>
#if(0)
int checkCPU();
main()
{
int j;
j = checkCPU();
printf("j = %d\n", j);
}
int checkCPU()
{
union w
{
int a; //这里占4个字节 32位
char b;//这里占一个字节8位
} c;
c.a = 1; //一个数字占一个字节,把1赋给整型a;如果是小端的话
//1就存放在整型a的低地址中
return(c.b == 1); //如果b==1的话那就是小端
}
#endif
#if(1)
int main( )
{
union w //这个就更好理解了
{
int a;
char b; //定义一个字符数组
} c;
c.a = 1;
if(c.b == 1) //也就相当于地位上的数据
printf("这个地址是小端模式\n");
else if(c.b == 1)
printf("这个地址是大端模式\n");
return 0;
}
#endif
本帖最后由 oggplay 于 2014-3-29 22:49 编辑
看x/16b 0x4006d0下面那一行 最后的0x01然后接着下面的3个0x00,因为int为4个字节。所以能看出我的机器是小端法。
页:
[1]