Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359883
  • 博文数量: 100
  • 博客积分: 2500
  • 博客等级: 大尉
  • 技术积分: 1209
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-15 21:24
文章分类

全部博文(100)

文章存档

2011年(100)

分类: LINUX

2011-04-27 09:37:06

  大小端是指CPU存储数据的方式。

  比如一个0x01020304这个整数,在内存中的布局如下: 
  
   [01][02][03][04] 注意左边是低地址,而右边是高地址,此为大端
   
   [04][03][02][01] 注意左边是低地址,而右边是高地址 ,此为小端

   通俗的说,和内存布局一致(低位存放在低地址,高位存放在高地址)的就是小端,和内存布局不一致的就是大端。 

  1. #include <stdio.h>

 //union的所有成员内存存放顺序是一致的
  1. union _un
  2. {
  3.         int a;
  4.         char c;
  5. };

  6. int
  7. main(void)
  8. {
  9.         union _un u;
  10.         u.a = 1;
  11.         if (1 == u.c)
  12.                 printf("Little end\n");
  13.         else
  14.                 printf("Big end\n");

  15.         short int x = 0x1122;
  16.         char *p = (char *)&x;   //只取低地址部分
  17.         if (*p == 0x22)
  18.                 printf("Little end\n");
  19.         else
  20.                 printf("Big end\n");

  21.         return (0);
  22. }

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