- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(字节序、字节对齐的理解
1、 前言作为一名 C/C++ 程序员,字节是我们天天都要与之打交道的一个东西。我们和它熟稔到几乎已经忘记了它的存在。可是,它自己是不甘寂寞的,或迟或早地,总会在某些时候探出头 来张望,然后给你一个腿儿绊。其实,只要你真正了解了它的底细,你就会畅行无阻。在本文中,我们将首先简要了解一下字节的概念,然后着重了解一下字节序问 题和字节对齐问题。2、 什么是字节我们知道,二进制计算机(也就是我们目前接触到的几乎所有的计算机)的最小数据单位是位( bit )。一位数据只能够表示两种含义(需要说明,尽管我们通常把单个位表示的两种含义选择为相互对立的含义,但这并不是必然的,例如你可以认为 1 代表 5 个人, 0 代表 8 个人),对于绝大多数的计算要求,单个位显然不能满足。因此,我们通常都会使用一连串的位,我们可以称之为位串( bit string ,请爱好质疑的的朋友注意,此术语非我杜撰)。由于种种原因,计算机系统都不会让你使用任意长度的位串,而是使用某个特定长度的位串。一些常见的位串长度 形式具有约定好的名称,如,半字节( nibble ,貌似用的不多)代表四个位的组合,字节( byte ,主角出场!)代表 8 个位的组合。再多的还有,字( word )、双字( Double word ,通常简写为 Dword )、四字( Quad word ,经常简写为 Qword )、十字节( Ten byte ,也简写为 Tbyte )。在这些里面,字( word )有时表示不同的含义。在 Intel 体系里, word 表示一个 16 位的数值,它是固定大小的。而在另外一些场合, word 表示了 CPU 一次可处理的数据的位数,表示一个符合 CPU 字长( word-length )的数目的位串。事实上我们接触较多的 ARM 体系中, word 就有不同的含义,它表示一个 32 位的数据(与机器字长相同),对于 16 位大小的数据, ARM 使用了另外的一个术语,叫作半字( half-word ),请大家在文档阅读时加以注意。另外, Qword 也是 Intel 体系中的术语,其他的体系中可能并不使用。在本文中,我们按照 Intel 的惯例来使用字或者 word 这一术语。一个字节中共有 8 个数据位,有时需要用图表逐位表述各个位。习惯上,我们按照下面的图来排列各个位的顺序,即,按照从右到左的顺序,依次为最低位(从第 0 位开始)到最高位(对于字节,则是第 7 位):字节是大多数现代计算机的最小存储单元,但这并不代表它是计算机可以最高效地处理的数据单位。一般的来说,计算机可以最高效地处理的数据大小,应该 与其字长相同。在目前来讲,桌面平台的处理器字长正处于从 32 位向 64 位过渡的时期,嵌入式设备的基本稳定在 32 位,而在某些专业领域(如高端显卡),处理器字长早已经达到了 64 位乃至更多的 128 位。3、 字节序问题的由来对于字、双字这些多于一个字节的数据,如果把它们放置到内存中的某个位置上,可以看出,我们还可以将之看作是字节的序列。一个字是两个字节,双字则 是四个字节。假设有以下数据: 0、 0x9abcdef0 。在此处,我使用了我们最习惯的十六进制表示法,并给出了两个双字的值。按照惯例,我把双字的左侧视为高端,而把右侧视为低端。把它们顺序放置在起始地址 为 0 的内存中,如下图所示:由图示可知, 0x9abcdef 的相应地址为 0x04 。现在,问题来了,如果有一个内存操作,要从地址 0x06 处读取一个字,得到的结果是多少呢?答案是:不一定。这里的本质问题在于,如何把多字节的对象存储到内存中去呢?即使使用最正常的思维去考虑这个问题,你也会发现有两种方法。第一种方法是,把最低端的 字节放到指定的起始位置(即基地址处),然后按照从低到高的字节顺序把其余字节依次放入,如下图 a ;另一种方法非常类似,但是对高端字节和低端字节的处理顺序正好相反,如下图 b (我确信你还可以想出其他的方法,但是除二字节的情况外,必然会打破字节排列顺序的一致性,我视之为反常规思维的产物,此处暂不考虑)。图 a图 b在很久之前,哪一种存储方式更为合理曾经有过争论。到今天,争论的结果已经无关紧要了,紧要的是以下事实:这两种存储方式都被应用到了现实的计算机 系统中。上图 a 中的排列方式为 Intel 所采用并大行其道,而图 b 的排列方式则被大多数的其他平台采用(如最近被苹果公司彻底抛弃的 PowerPC ),因此上,我们不能称之为罕见的用法。之所以造成事实上的不经常见到,其原因正如我今天中午所得到的消息: Intel 的 CPU 占整个市场份额的 80% 以上。这两种排列方式通常用小端( little endian )和大端(
您可能关注的文档
- 《自治县关于进一步加强少数民族学前和中小学“双语”教学工作的实施方案.doc
- 第十六章教科文体卫2.doc
- 《自治县经济贸易局2007年工作总结及2008年工作措施2007年11月20日.doc
- (好的演讲稿结尾.doc
- (好看的个性签名符号.doc
- 《自然保护区域生态旅游.doc
- (如果你没学过人力资源又想做HR.doc
- (如梦令教学设计.doc
- 第十四章_一次函数_全章导学案.doc
- (妇幼卫生信息统计及档案资料管理流程.doc
- 5.3.1函数的单调性(教学课件)--高中数学人教A版(2019)选择性必修第二册.pptx
- 部编版道德与法治2024三年级上册 《科技提升国力》PPT课件.pptx
- 2.7.2 抛物线的几何性质(教学课件)-高中数学人教B版(2019)选择性必修第一册.pptx
- 人教部编统编版小学六年级上册道德与法治9 知法守法 依法维权(第一课时)课件.pptx
- 三年级上册品德道德与法治《学习伴我成长》.pptx
- 部编版小学道德与法治六年级上册6 人大代表为人民 课件.pptx
- 部编版小学道德与法治六年级上册1感受生活中的法律第一课时课件.pptx
- 2.5.2圆与圆的位置关系(教学课件)-高中数学人教A版(2019)选择性必修第一册.pptx
- 2.5.1直线与圆的位置关系-(教学课件)--高中数学人教A版(2019)选择性必修第一册.pptx
- 14.1.1 同底数幂的乘法(教学课件)-初中数学人教版八年级上册.pptx
文档评论(0)