【已解决】如何判断处理器是大端,或小端?

去年11月份的面试题,今天有空整理出来了,算是总结。

************************************************************

大端、小端指对操作数的存放,大端从高到低放,小端从低到高放。X86的intel平台为小端,单片机一般为大端。

举个例子:

操作数0x12345678在内存中的存放,假设从地址0x4000开始放。

大端:

内存地址                存放内容

0x4000                    0x12

0x4001                    0x34

0x4002                    0x56

0x4003                    0x78

小端反过来,先在0x4000处放0x78。


通过程序可以判断cpu是大端,还是小端。介绍两种方法,大同小异,自己体会。

#include int checkCPU(){ //检测方法1   ps:共同体共用内存,b从内存的头开始取,如果取的1,则说明cpu先存的a的低位,即小端(内存中a的高位为0,低位为1)union un{int a;char b;}guo;guo.a = 1;return (guo.b==1);
}int checkCPU2(){  //检测2unsigned short usData = 0x1133;unsigned char *pucData = (unsigned char*)&usData; //去short的二位地址,强制转化为char的一位,即取usData内存的开头一位。原理方法一return(*pucData==0x33);
}int main(){if (checkCPU2())printf("小端cpu\n");elseprintf("大端cpu\n");getchar();return 0;}
我的x86,intel酷睿i5的笔记本,运行结果如下:





本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部