欢迎来到天天文库
浏览记录
ID:57700819
大小:24.62 KB
页数:10页
时间:2020-09-01
《大端小端规则.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、+------
此文档下载收益归作者所有