大端模式与小端模式

大端模式与小端模式

ID:40200158

大小:47.00 KB

页数:5页

时间:2019-07-25

大端模式与小端模式_第1页
大端模式与小端模式_第2页
大端模式与小端模式_第3页
大端模式与小端模式_第4页
大端模式与小端模式_第5页
资源描述:

《大端模式与小端模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、大端与小端存储模式详解chariArr[10]={0,1,2,3,4,5,6,7,8,9};shortint*pVal=NULL;pVal=(shortint*)(iArr+2);shortinttVal=*pVal;请问:IntelCPU的计算机中:tVal=?chariArr[10]={0,1,2,3,4,5,6,7,8,9};shortint*pVal=NULL;pVal=(shortint*)(iArr+2);//pVal和(iArr+2)都指向数组iArr的的3个元素2的地址shortinttV

2、al=*pVal;//pVal指向的地址的内容(按字节)是:0x02,0x03,0x04,0x05由于tVal和pVal分别是short类型的变量和指针而IntelCPU的对short双字节的存放是:高字节在后,低字节在前所以,tVal=*pVal=0x02+(0x03<<8)=0x0302=770tVak=770原因:*pVal=(02,03,04,05,06,07,08,09)因为tVal是占四个字节所以tVal在内存中的值是0203.因为内存中的是从低位开始存储。则tVal的十六进制值是:0302转

3、化成十进制数是770在计算机业界,Endian表示数据在存储器中的存放顺序。下文举例说明在计算机中大小端模式的区别。如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本文使用OP0表示一个32位数据的最高字节MSB(MostSignificantByte),使用OP3表示一个32位数据最低字节LSB(LeastSignificantByte)。 地址偏移大端模式小端模式0x0012(OP0)78(OP3)0x01

4、34(OP1)56(OP2)0x0256(OP2)34(OP1)0x0378(OP3)12(OP0)小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址。大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。 地址偏移大端模式小端模式0x0012(OP0)34(OP1)0x0134(OP1)12(OP0)由上表所知,采用大小模

5、式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。有的处理器系统采用了小端方式进行数据存放,如Intel的奔腾。有的处理器系统采用了大端方式进行数据存放,如IBM半导体和Freescale的PowerPC处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。因此在一个处理器系

6、统中,有可能存在大端和小端模式同时存在的现象。这一现象为系统的软硬件设计带来了不小的麻烦,这要求系统设计工程师,必须深入理解大端和小端模式的差别。大端与小端模式的差别体现在一个处理器的寄存器,指令集,系统总线等各个层次中。【用函数判断系统是BigEndian还是LittleEndian】//如果字节序为big-endian,返回true;//反之为  little-endian,返回falsebool IsBig_Endian(){    unsignedshort test= 0x1234;   if(

7、*((unsignedchar*)&test)== 0x12)       return TRUE;  else       return FALSE;}//IsBig_Endian()有时候,用C语言写程序时需要知道是大端模式还是小端模式。所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端模式相反。为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,

8、还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010

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

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

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