Endian的由来
============================
NightOwl(zjwu@bigfoot.com)
2002/07/16
============================
一、引子
在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了
计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、
字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方
将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采
用的字节存储机制主要有两种:
big-edian和little-endian。本文简要描述这两种存储机制的来历、特点和区别。
为了叙述方便,下面先对本文中将要用到的两个术语做简单的定义。
1、MSB
MSB是Most Significant Bit/Byte的首字母缩写,通常译为最重要的位或者最
重要的字节。它通常用来表明在一个bit序列(如一个byte是8个bit组成的一个序
列)或者一个byte序列(如word是两个byte组成的一个序列)中对整个序列取值影
响最大的那个bit/byte。
2、LSB
LSB是Least Significant Bit/Byte的首字母缩写,通常译为最不重要的位或
者最不重要的字节。它通常用来表明在一个bit序列(如一个byte是8个bit组成的
一个序列)或者一个byte序列(如word是两个byte组成的一个序列)中对整个序
列取值影响最小的那个bit/byte。
二、endian的来由
1、Definition
endian: The ordering of bytes in a multi-byte number.
定义:在计算机系统体系结构中用来描述在多字节数中各个字节的存储顺序。
2、Etymology
The term comes from Swift's "Gulliver's Travels" via the famous paper
"On Holy Wars and a Plea for Peace" by Danny Cohen, USC/ISI IEN 137,
1980-04-01.
The Lilliputians, being very small, had correspondingly small political
problems. The Big-Endian and Little-Endian parties debated over whether
soft-boiled eggs should be opened at the big end or the little end.[From:
Free On-Line Dictionary Of Computing or Jargon File]
词源:据Jargon File记载,endian这个词来源于Jonathan
Swift在1726年写的讽刺小说 "Gulliver's Travels"(《格利佛游记》)。该小说
在描述Gulliver畅游小人国时碰到了如下的一个场景。在小人国里的小人因为非常
小(身高6英寸)所以总是碰到一些意想不到的问题。有一次因为对水煮蛋该从大的
一端(Big-End)剥开还是小的一端(Little-End)剥开的争论而引发了一场战争,
并形成了两支截然对立的队伍:支持从Big-End剥开的人Swift就称作Big-Endians
而支持从Little-End剥开的人就称作Little-Endians……(后缀ian表明的就是支持
某种观点的人:-)。Endian这个词由此而来。
1980年,Danny Cohen在其著名的论文"On Holy Wars and a Plea for Peace"
中为了平息一场关于在消息中字节该以什么样的顺序进行传送的争论而引用了该词。
该文中,Cohen非常形象贴切地把支持从一个消息序列的MSB开始传送的那伙人叫做
Big-Endians,支持从LSB开始传送的相对应地叫做Little-Endians。此后Endian这
个词便随着这篇论文而被广为采用。
三、各种endian
1、big-endian
A computer architecture in which, within a given multi-byte numeric
representation, the most significant byte has the lowest address (the
word is stored "big-end-first").
Most processors, including the IBM 370 family, the PDP-10, the
Motorola microprocessor families, and most of the various RISC designs
current in mid-1993, are big-endian. [From: Free On-Line Dictionary Of
Computing or Jargon File]
big-endian:计算机体系结构中一种描述多字节存储顺序的术语,在这种机制
中最重要字节(MSB)存放在最低端的地址上。采用这种机制的处理器有IBM3700系
列、PDP-10、Mortolora微处理器系列和绝大多数的RISC处理器。
+----------+
| 0x34 |<-- 0x00000021
+----------+
| 0x12 |<-- 0x00000020
+----------+
图1:双字节数0x1234以big-endian的方式存在起始地址0x00000020中
在Big-Endian中,对于bit序列中的序号编排方式如下(以双字节数0x8B8A为
例):
bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+----------------------------------------+
val | 1 0 0 0 1 0 1 1 | 1 0 0 0 1 0 1 0 |
+----------------------------------------+
^ 0x8B 0x8A ^
MSB LSB
图2:Big-Endian的bit序列编码方式
注1:通常在TCP/IP协议栈所说的网络序(Network Order)就是遵循Big-Endian
规则。在TCP/IP网络通信中,通信双方把消息按照如图2的方式进行编码,然后按
从MSB(Bit0)到LSB的顺序在网络上传送。
2、little-endian
<data, architecture> A computer architecture in which, within a given
16- or 32-bit word,bytes at lower addresses have lower significance (the
word is stored "little-end-first"). The PDP-11 and VAX families of
computers and Intel microprocessors and a lot of communications and
networking hardware are little-endian.
The term is sometimes used to describe the ordering of units other
than bytes; most often, bits within a byte. [From: Free On-Line Dictionary
Of Computing or Jargon File]
little-endian:计算机体系结构中一种描述多字节存储顺序的术语,在这种机
制中最不重要字节(LSB)存放在最低端的地址上。采用这种机制的处理器有PDP-11、
VAX、Intel系列微处理器和一些网络通信设备。该术语除了描述多字节存储顺序外
还常常用来描述一个字节中各个比特的排放次序。
+----------+
| 0x12 |<-- 0x00000021
+----------+
| 0x34 |<-- 0x00000020
+----------+
图3:双字节数0x1234以little-endian的方式存在起始地址0x00000020中
在Little-Endian中,对于bit序列中的序号编排和Big-Endian刚好相反,其方
式如下(以双字节数0x8B8A为例):
bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+-----------------------------------------+
val | 1 0 0 0 1 0 1 1 | 1 0 0 0 1 0 1 0 |
+-----------------------------------------+
^ 0x8B 0x8A ^
MSB LSB
图4:Little-Endian的bit序列编码方式
注2:正因为这两种机制对于同一bit序列的序号编排方式恰恰相反,所以《现
代英汉词典》中对MSB的翻译为“最高有效位”欠妥,故本文定义为“最重要的bit
/byte”。
3、middle-endian:
<data, architecture> Neither big-endian nor little-endian. Used of
perverse byte orders such as 3-4-1-2 or 2-1-4-3, occasionally found in
the packed decimal formats of some minicomputer manufacturers.[From:
Free On-Line Dictionary Of Computing or Jargon File]
middle-endian:除了big-endian和little-endian之外的多字节存储顺序就是
middle-endian,比如以4个字节为例:象以3-4-1-2或者2-1-4-3这样的顺序存储的
就是middle-endian。这种存储顺序偶尔会在一些小型机体系中的十进制数的压缩格
式中出现。
四、收尾
要详细解释这两种编码顺序已经超出本文所涉及的内容,如果你有兴趣的话可
以参考上面提及的Danny Cohen的论文("On Holy Wars and a Plea for Peace"),
该论文详细的描述了这两种编码顺序的历史、所基于的数学理论和各自拥护者争论
的焦点等知识,绝对可以大饱你打破沙锅问到底的内心需要。
五、References & WebLinks
1. Free On-Line Dictionary Of Computing
[http://foldoc.doc.ic.ac.uk/foldoc/index.html]
2. Jargon File [http://info.astrian.net/jargon/]
3. Gulliver's Travels《格利佛游记》
[http://www.jaffebros.com/lee/gulliver/]
4. On Holy Wars and a Plea for Peace
[http://khavrinen.lcs.mit.edu/wollman/ien-137.txt]
- 浏览: 4577644 次
- 性别:
- 来自: 武汉
最新评论
-
x70740692:
我也是舆情系统苦逼难做
网络舆情信息分析系统——(1) -
勇气魄力:
啥啊!没什么信息
ArcGIS for Server 10.1智能支持云的架构(上) -
迟来的风:
很不错,值得学习,非常感谢您给了我们这么好的资源
最新 跟我学spring3 电子书下载 -
linfanne:
哭了, 有一个地方写错了, 跟了2个多小时代码才找到原因& ...
Spring MVC+Freemarker+Javascript的多语言(国际化i18n/本地化)和主题(Theme)实现 -
linfanne:
无数的鲜花,多语言暂时不考虑,多主题刚好用到,我一般都不回帖, ...
Spring MVC+Freemarker+Javascript的多语言(国际化i18n/本地化)和主题(Theme)实现
相关推荐
周日圣哉三一奇异恩典十架下我低头静默思想我的灵啊你当醒起.pptx
顶石项目 入门 分叉并克隆此仓库。 npm install 。 要启动React Native,请运行npm start 要启动Express Server,请运行npm run start-server
BP 网络在人工神经网络中应用最为广泛,文中给出基于 MATLAB 语言的 BP 神经网络 PID 控制器的 S 函数实 现,在此基础上建立 BP 神经网络 PID 控制器的 Simulink 仿真模型,最后给出了该仿真模型应用在非线性对象中...
播放器无线电的恩典 网络电台GRAÇADIVINA MELODIA QUE TOCA O CEU 支持语言:português (Brasil)
#GracePHP 是一个超微型PHP框架,尝试用优雅的代码编写,适用于简单系统的快速开发,支持HMVC,提供了简单的路由方式,抛弃了复杂PHP模板,采用原生PHP语法来渲染页面,同时提供了widget功能... #Require ....htaccess 支持
在本课程的实验中,通过使用JSP/Servlet/JDBC/Struts框架技术构建一个具有基本功能的在线图书网站,使学生进一步理解和掌握Web应用的开发技术。主要要求如下: 1. 掌握JSP/Servlets﹑Struts框架等基本的Web开发...
软件自带三个透明皮肤包,分别为恩典版、清凉美女版、卡通版,到处寻找恩典透明皮肤下载的网友可不要错过哦,借助这个工具,你可以轻松制作自己专有的恩典皮肤。 晨风QQ透明皮肤修改器是通过分析QQ皮肤文件的...
GraceShopper自述文件推送产品Redux
奇异恩典
Kozol, J. (1995). Amazing grace: The lives of children and the conscience of a nation. New York: Crown, 286 pp., [dollar]23.00 Book Reviews 363 natural detail as she paraded around Pilgrim Creek ...
恩典词典 CS 420 作业 2
由于上帝的恩典,这个项目存在。 如果你不喜欢这个,那就不要读它,它不适合你。 “因此,我们因信称义,通过我们的主耶稣基督与上帝和好:我们也可以因信进入我们所站的这恩典,并因盼望上帝的荣耀而欢喜。不仅...
版权所有2012年以来由敖特的解决方案,公司- 由于上帝的恩典,这个项目存在。 如果您不喜欢它,那就不要阅读它,它不适合您。 “因此被信仰称义,我们通过我们的主耶稣基督与上帝保持和平:我们也可以通过谁通过信仰...
放松点发送到飞数电数电方式对方的撒旦捱三顶五都是宣传周恩典三大赛的 我的丹参滴丸地的撒旦我去三大赛大青蛙点确定撒权威的撒旦我都是阿呆阿什顿带我去青蛙的撒旦爱我去达到撒青蛙阿呆少达多穷我现在
耶和华借着上帝的恩典祝福我,而我做到了! 最初,我使用了此配置文件,但随后自定义了“ URL”,我决定创建当前的配置文件。 搜索互联网,我可以在网站上找到文字除了在我的存储库中之外,如果您想看一看,该项目...
1.仿QQ的CC登录界面采用网络美女恩典作为主题类型,界面更好看又养眼,界面相似度达80%。 2.实现了记住密码的功能,甩开忘记密码的烦恼。 3.局域网内互动聊天,增加邻居感情,又做到足不出门知天下事。 4.仿QQ窗口的...
语言:English,русский t-rex在浏览器中的Chrome的离线游戏。 Dino运行,也称为T-Rex游戏和Dino Runner,是Google Chrome Web中的内置浏览器游戏 浏览器。 如果您有一个免费的... 游戏的诱惑具有简单和恩典。
,新的选项卡页面显示阀杆中一个女性的图片和短生物(我们的示例使用了恩典 Hopper)有链接来了解更多关于她的信息,以及去学习一些允许您在她的道路上追随的基本技能的联系。 在Grace的情况下,底部有链接将您免费...
昙花一现MERN STACK - 任务管理器应用程序这个应用程序的前端是使用 React.js 创建的。对于后端,我使用 Nodejs、... 总的来说,在真主的恩典下,我已经能够建立我的第一个 MERN Stack App.Alhamdulillah。 #安拉全能
] Momentjs Nextjs 图像优化条纹支付网关后端技术CMS/管理面板- ReactJs 引导程序 5 Momentjs 羽毛笔文本编辑器服务器节点Expressjs MongoDB 猫鼬智威汤逊加密.env 条纹Alhamdulillah,靠着真主的恩典,我已经能够...