【已解决】如何判断处理器是大端,或小端?
去年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的笔记本,运行结果如下:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
