Chinaunix首页 | 论坛 | 博客
  • 博客访问: 270508
  • 博文数量: 103
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 480
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-08 23:18
文章分类

全部博文(103)

文章存档

2016年(1)

2015年(76)

2014年(26)

我的朋友

分类: C/C++

2015-04-13 19:17:29

ARM体系中,每个字单元包含4个字节单元或者两个半字单元。在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:big-endianlittle-endian格式。在小端模式中,低位字节放在低地址,高位字节放在高地址;在大端模式中,低位字节放在高地址,高位字节放在低地址。

C语言中,不同于结构体,共用体(联合体)中的几种不同类型的变量存放在同一段内存单元中。利用这一特点,可以用联合体变量判断ARMx86环境下,存储系统是是大端还是小端模式。

#include "stdio.h"
int main()
{
  union w
 {
  int a;  //4 bytes
  char b; //1 byte
 } c;
  c.a=1;
  if (c.b==1)
  printf("It is Little_endian!\n");
  else
  printf("It is Big_endian!\n");
  return 1;
}
说明:
c中,联合体(共用体)的数据成员都是从低地址开始存放。
若是小端模式,由低地址到高地址c.a存放为0x01 00 00 00c.b被赋值为0x01

  ————————————————————————————

   地址 0x00000000 0x00000001 0x00000002 0x00000003

管理员在2009年8月13日编辑了该文章文章。

-->
阅读(3640) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~