Chinaunix首页 | 论坛 | 博客
  • 博客访问: 533030
  • 博文数量: 129
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1888
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-20 11:09
文章分类

全部博文(129)

文章存档

2016年(1)

2015年(5)

2014年(64)

2013年(59)

我的朋友

分类: LINUX

2013-08-27 12:44:06

 内存中存储数据有两种方法:一种低字节序列存储在起始地址,这称为小端字节序,另一种方法是将高字节序列存储在起始地址,这称为大端字节序。
术语“小端”和“大端”表示多字节值的哪一端(大端或小端)存储在改值的起始地址。

  仿造书上page65页的例子,写的代码如下:
    
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main(int argc,char **argv)
  4. {
  5.     union{
  6.       short s;
  7.       char c[sizeof(short)];
  8.     }un;


  9.     un.s=0x0102;
  10.     //printf("%s",CPU_VENDOR_OS);
  11.     if(sizeof(short)==2)
  12.     {
  13.        if(un.c[0]==1 && un.c[1]==2)
  14.          printf("big_endian\n");
  15.        else if(un.c[0]==2 && un.c[1]==1)
  16.        {
  17.          printf("little_endian\n");
  18.          printf("sizeof(short)=%d\n",sizeof(short));
  19.        }
  20.        else
  21.          printf("unkown\n");
  22.     }
  23.     else
  24.      {
  25.        printf("sizeof(short)=%d\n",sizeof(short));
  26.      }

  27.      exit(0);
  28. }

运行结果现实我的机器上是小端字节序,short占的字节为2.
阅读(1287) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~