大小端问题

1864阅读 0评论2011-04-27 onezeroone
分类:LINUX

  大小端是指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. }

上一篇:字符串循环移位查找子字符串
下一篇:静态链接库