Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65004
  • 博文数量: 13
  • 博客积分: 335
  • 博客等级: 一等列兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-05 22:28
文章分类
文章存档

2008年(7)

2007年(6)

我的朋友
最近访客

分类: C/C++

2008-03-25 21:39:08

   今天看书看到了内存字节序的问题,以前也注意过,在一次做网络帧格式分析的时候没有注意网络字节序和主机字节序的问题还吃过苦头。今天看的书上说Big Endian和Little Endian的名字源自《格利佛游记》(Gulliver's Travels)的小人国的故事,小人们为吃鸡蛋从小端打开还是大端打开发起了一场“战争”,在制定网络协议时借用了这个词。不同架构的处理器在字节序上有大小端的区别,X86使用小端,不过大端好像更流行。
   第一次看到
Endian时去查字典没查到,一直觉得这个词古怪,翻译为“端”就更古怪了,原来源自吃鸡蛋,很搞笑。这个是书上的一幅图:

 

或许回答这个问题意味着战争




  大端(big endian)和小端(little endian)之争
    大端,小端是字在内存中的存储方式,以下文字摘自一本优秀的计算机教材《深入理解计算机系统》(Computer Systems,A Programmer's Perspective)
Jonathan Swift在1726年描述大,小端之争的历史:
"...我下面要告诉你的是,Liliput和Blefuscu这两大强国在过去三十六个月里一直在苦战。战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端,可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了,因此他的父亲,当时的皇帝,就下了一道敕令,命令全体臣民吃鸡蛋时打破鸡蛋较小的一端,违令者者重罚。老百姓们对这项命令极为反感。历史告诉我们,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。这些叛乱大多都是由Blefuscu的国王大臣们煽动起来的。叛乱平息后,流亡的人总是逃到那个帝国去寻求避难。据估计,先后几次有一万一千人情愿受死也不肯去打破鸡蛋较小的一端。关于这一争端,曾出版过几百本大部著作,不过大端派的书一直受禁,法律也规定该派的任何人不得做官。"(摘自蒋剑锋译的《格利佛游记》第一卷第4章)Swift是在讽刺英国(Lilliput)和法国(Blefuscu)之间的持续的冲突。Danny Cohen,一位网络协议的早期开创者,第一次使用这两个术语来指代字节顺序。



我原打算浪费口舌详细说说内存大小端模式的,百度了一下发现有好多人都写过了,在CU就有一篇:
举例说明 little endian 与 big endian



重用是软件工程的强调的重要思想,所以我把别人写的都收集起来
有人在百度空间为这个问题写了三篇文章,不过到第三篇才切入正题,前面两篇是铺垫,写的是内存的基础知识:
big endian与little endian (1)
big endian与little endian (2)
big endian与little endian (3)



--------------今天的《CS八卦旧闻》到此结束,谢谢收看----------

阅读(2061) | 评论(0) | 转发(0) |
0

上一篇:Fedora下安装miniGUI

下一篇:回车的传说

给主人留下些什么吧!~~