大端模式和小端模式的检测

来源:互联网 发布:mac顶部菜单栏隐藏 编辑:程序博客网 时间:2024/06/06 00:39

一、定义

小端模式是把数据的高位存放在高地址处,低位存放在内存的低地址处;

大端模式是把数据的高位存放在低地址处,低位存放在内存的高地址处,类似于存储字符串的感觉。

二、举例:

int a=0x12345678;并假设变量a的起始地址为0x10000000,则有如下结果:

内存地址大端模式小端模式0x100000000x120x780x100000010x340x560x100000020x560x340x100000030x780x12

 三、检测一个CPU是大端模式还是小端模式

       方法一:利用强制类型转化,代码如下

#include "stdio.h"int main(void){int a=0x12345678;char b=(char)a;printf("addr(a)=0x%08x\n",&a);printf("a=0x%X\n",a);printf("b=0x%X\n",b);if(b==0x12){printf("大端\n");return 1;}else if(0x78 == b){printf("小端\n");return 0;}else{printf("ERROR!\n");return -1;}}

       方法二、利用联合体的特性(所有成员相对于基地址的偏移量都为0),代码如下:

#include "stdio.h"int main(void){union{int a;char b;}check;check.a=0x12345678;if(check.b==0x12){printf("大端\n");return 1;}else if(0x78 == check.b){printf("小端\n");return 0;}else{printf("ERROR!\n");return -1;}}

四、结果

       Inter(R) Core(TM) i5-4570为小端模式;

       Power PC 为大端模式。

0 0