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

一、定义

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

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

二、举例:

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

内存地址大端模式小端模式
0x100000000x120x78
0x100000010x340x56
0x100000020x560x34
0x100000030x780x12

 三、检测一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值