烧饼的技术乱讲
In: C/C++
5 三 2010假期里面在家里忙尹老师的激光项目,阅读文件格式文档的时候看到关于字节序(Byte Order)的要求: For values which span more than a single byte, the multiple byte ordering followed is that of the Big Endian / Motorola standard. The most significant byte will occur first, the least significant byte last 想起以前在汇编语言和数字逻辑的时候也有接触到一些这个概念,已经有点模糊了,搞不清楚哪个是低位在前哪个是高位在前。后来在Wiki和Google的帮助下也算摸清楚了一些Endianness的概念。 一、字节序的起源 在计算机中,字节序(Endianness)是数据中单独的可取地址的亚型(words,bytes和bits)在外部存储器中存储的顺序。通常在提到四字(ddword)、双字(dword)和字(word)的时候需要考虑其实际的字节顺序,为了简便起见它的英文也常常表示为Byte Order。 Endianness这个词源自1726年Jonathan Swift的名著:Gulliver’s Travels(格列佛游记),在书中有一个故事,大意是指Lilliput(小人国)的领导下了一道指令,规定其人民在剥水煮蛋时必须从little-end(小的那一端)开始。这个规定惹恼了一群觉得应该要从big-end(大的那一刻)开始剥的人。事情发展到后来,竟然演变成一场纷战。支持小的那端的人被称为little-endian,反之则被称为big-endian(在英语中后缀“-ian”表示“xx人”的意思)。1980年Danny Cohen在他的论文“On Holy Wars and a Plea for Peace”中第一次使用了Big-和Little-这两个术语,最终它们成为了计算机通过网络与其他计算机连接时所要考虑的极其重要的一个问题。 二、字节序的种类和其表示 那么为什么要引入字节序呢。我们都知道,计算机存储中最小的单位是位(bit),而8bit构成一个字节(byte)。在一个32位的CPU中,字长为32bit,也就是4byte,数据要想存放在内存中供CPU读取和写入,就需要拥有一定的存放顺序。这样不同的CPU可接受的字节序有可能不同,那么在设计硬件和软件时数据的存放问题也需要分开考虑。 数据都有所谓的“有效位(Significant [...]
I'm now a graduate student of Computer Applied Technology in Tongji University. I like Computer Graphics, Web 2.0, Magic, Music and am partially a geek. This blog is about C++, algorithm, cg, comments and other things I may get in touch with in the near future. Hope everyone enjoy this little site. Contact me: 4everlove.xu AT gmail.com