大端小端规则.docx

大端小端规则.docx

ID:57700819

大小:24.62 KB

页数:10页

时间:2020-09-01

大端小端规则.docx_第1页
大端小端规则.docx_第2页
大端小端规则.docx_第3页
大端小端规则.docx_第4页
大端小端规则.docx_第5页
资源描述:

《大端小端规则.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Intel是小端规则~~Motorola680x0是大端规则~~在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:Big-Endian和Little-Endian,下面先从字节序说起。 一、什么是字节序字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类

2、型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。其实大部分人在实际的开发中都很少会直接和字节序打交道。唯有在跨平台以及网络程序中字节序才是一个应该被考虑的问题。在所有的介绍字节序的文章中都会提到字节序分为两类:Big-Endian和Little-Endian,引用标准的Big-Endian和Little-Endian的定义如下:a)Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。b)Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内

3、存的高地址端。c)网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。1.1什么是高/低地址端首先我们要知道我们C程序映像中内存的空间布局情况:在《C专家编程》中或者《Unix环境高级编程》中有关于内存空间布局情况的说明,大致如下图:-----------------------最高内存地址0xffffffff栈底栈栈顶-----------------------NULL(空洞)-----------------------堆--------

4、---------------未初始化的数据-----------------------统称数据段初始化的数据-----------------------正文段(代码段)-----------------------最低内存地址0x00000000以上图为例如果我们在栈上分配一个unsignedcharbuf[4],那么这个数组变量在栈上是如何布局的呢?看下图:栈底(高地址)----------buf[3]buf[2]buf[1]buf[0]----------栈顶(低地址)1.2什么是高/低字节现在我们弄清了

5、高/低地址,接着考虑高/低字节。有些文章中称低位字节为最低有效位,高位字节为最高有效位。如果我们有一个32位无符号整型0x12345678,那么高位是什么,低位又是什么呢?其实很简单。在十进制中我们都说靠左边的是高位,靠右边的是低位,在其他进制也是如此。就拿0x12345678来说,从高位到低位的字节依次是0x12、0x34、0x56和0x78。高/低地址端和高/低字节都弄清了。我们再来回顾一下Big-Endian和Little-Endian的定义,并用图示说明两种字节序:以unsignedintvalue=0x1

6、2345678为例,分别看看在两种字节序下其存储情况,我们可以用unsignedcharbuf[4]来表示value:Big-Endian:低地址存放高位,如下图:栈底(高地址)---------------buf[3](0x78)--低位buf[2](0x56)buf[1](0x34)buf[0](0x12)--高位---------------栈顶(低地址)Little-Endian:低地址存放低位,如下图:栈底(高地址)---------------buf[3](0x12)--高位buf[2](0x34)bu

7、f[1](0x56)buf[0](0x78)--低位--------------栈顶(低地址) 二、各种Endian2.1Big-Endian计算机体系结构中一种描述多字节存储顺序的术语,在这种机制中最重要字节(MSB)存放在最低端的地址上。采用这种机制的处理器有IBM3700系列、PDP-10、Mortolora微处理器系列和绝大多数的RISC处理器。+----------+

8、0x34

9、<--0x00000021+----------+

10、0x12

11、<--0x00000020+----------+图1:双字节数0

12、x1234以Big-Endian的方式存在起始地址0x00000020中 在Big-Endian中,对于bit序列中的序号编排方式如下(以双字节数0x8B8A为例):bit0123456789101112131415+-----------------------------------------+val

13、10001011

14、10001010

15、+------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。