为什么会有大小端模式之分呢?

作者&投稿:文供 (若有异议请与网页底部的电邮联系)
~

  这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个 如何将多个字节安排 的问题。因此就导致了 大端存储模式 和 小端存储模式 。
  例如一个16bit的short型x,在内存中的地址为0x0010,x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,刚好相反。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

• Little-Endian:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。示例数字0x12 34 56 78在内存中的表示形式:
   内存 低地址 -----------------> 高地址
   0x78 | 0x56 | 0x34 | 0x12 *
  
低位子节 -----------------> 高位子节*

• Big-Endian:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。示例数字0x12 34 56 78在内存中的表示形式:
   内存 低地址 -----------------> 高地址
      0x12 | 0x34 | 0x56 | 0x78
   高位子节 -----------------> 低位子节

可见,大端模式和字符串的存储模式类似。但是也有各自的特点:
• 小端模式 :强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
• 大端模式 :符号位的判定固定为第一个字节,容易判断正负。

则可以通过以下方式判断机器的子节序

或者 利用联合体union成员的存放顺序都是从低地址开始的特性来做判断。

为了方便讨论,假设m_RegMW[0] = 0x3456; 在内存中为0x56、0x34。
现要将该数据发出,如果不进行数据转换直接发送,此时发送的数据为0x56,0x34。而Modbus是大端的,会将该数据解释为0x5634而非原数据0x3456,此时就会发生灾难性的错误。所以,在此之前,需要将小端数据转换成大端的,即进行高字节和低字节的交换,此时可以调用步骤五中的函数BigtoLittle16(m_RegMW[0]),之后再进行发送才可以得到正确的数据。




什么是大小端地址模式
大小端地址模式是指计算机在存储多字节类型的数据(如整数)时,对于字节的排列顺序有两种不同的方式:大端模式(Big-Endian)和小端模式(Little-Endian)。详细来说,当我们在计算机中存储一个大于一个字节的数据类型(例如,一个整数,它可能占用4个字节)时,就需要决定这些字节在内存中的排列顺序。大...

为什么会有大小端模式之分呢?
小端模式,刚好相反。我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。• Little-Endian:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。示例数字0x12 34 56 78在内存中的表示形式: ...

大小端模式的简介
大端模式指的是数据的高字节存储在内存的低位地址,而小端模式则是数据的低字节存储在内存的低位地址。简单来说,大端模式重视高位优先,而小端模式重视低位优先。2. 大小端模式的影响:对于某些应用,字节序的差异非常重要。比如网络通信中,由于网络协议基于文本或数据流协议处理二进制数据并不直接理解这些...

大端模式和小端模式
1、大端模式:大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式类似于把数据当作字符串顺序处理。地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的...

计算机中的大端和小端模式
在计算机中,字节序指的是在存储器中,多字节数据的字节存放顺序。大小端是计算机体系结构中的一个概念,用于表示在多字节数据类型中,字节的顺序。不同的计算机体系结构中,字节顺序可能不同。一些处理器将最高位字节存储在地址最低的位置,这被称为“大端字节序”,而另一些处理器将最低位字节存储在...

大小端模式的简介
在计算机存储中,数据的存储方式有大端模式(Big-endian)和小端模式(Little-endian)两种。大端模式的特点是高字节存储在内存低地址,低字节在高地址,类似于字符串顺序处理,地址从小到大,数据从高位到低位。以0x11223344为例,在大端模式下,前32位读取顺序为e6 84 6c 4e。而小端模式则相反,高字节...

为什么 ARM 8核采用 大小端模式
简单的来说,是为了兼顾性能与续航。(话说,把“big.LITTLE架构” 翻译成“大小端模式”也是醉了——在IT术语中,大端模式和小端模式指的是计算机处理器微指令集的存储模式,与“big.LITTLE架构”完全不是一回事儿。。。)ARM官方解释:big.LITTLE是一种节能省耗技术,最高性能的ARM CPU核心与最高效...

大小端模式
大端模式 大端模式是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中。大端模式与我们的阅读习惯相同。小端模式 小端模式是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中。举例 int a=2; 地址:小--->大 在大端模式中,a存为: ...

网络字节序和大小端的关系
网络字节序与大小端相辅相成,共同作用使操作任务完成。由于不同的系统会有不同的模式,为了统一,规定在网络传输中使用大端模式,这就是网络字节序。统一将网络上传输的字节序采用同一种模式,这样收发数据时,就会根据主机对应的模式是否和网络字节对应的模式一致,来判断是否需要进行转换。这样即使不同的...

如何确定大小端
大小端指的是计算机中字节序的不同。大端模式是指数据的高字节保存在内存的低地址中,而小端模式则是数据的低字节保存在内存的低地址中。了解大小端对于处理跨平台的数据通信和文件存储非常重要。2. 通过编程判断大小端:一种常见的方法是编写一段程序,通过访问特定内存地址中的值来判断。例如,可以定义...

卢龙县17393785386: 为什么内存要倒着存数据 -
道弯紫地: 首先,不是所有的系统都会倒着存数据,也有顺着存的,这在计算机学术语叫大小端模式,倒着存是大端模式,反之小端.一些嵌入式设备,手机,psp这种都是大端模式,pc上的大多是小端模式,另外,奉劝不要使用傻逼度和傻逼百科,请改用知乎和wiki.

卢龙县17393785386: ARM里的大端格式和小端格式分别是什么意思呀? -
道弯紫地: 所谓的大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放所谓的小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致.结合先前大那个答案中的例子应该就可以看懂了

卢龙县17393785386: C语言共用体 -
道弯紫地: 因为你这个是联合体,它在内存中每一个瞬间只能存放一个成员,共同体所占的内存的长度等于最长的成员的长度.这里的共同体占两个字节(一个字符占一个字节) a.ch[0]=13; a.ch[1]=0; 这两句在内存中是这样存放的0000 0000 0000 1101(计算机内是二进制);输出a.i其实就是这串数字的值.再举个列子,a.ch[0]=2;a.ch[1]=1;这时输出a.i=258;原因是这样的,0000 0001 0000 0010转化成十进制就是258了

卢龙县17393785386: Big Endian和Little Endian的区别 -
道弯紫地: 在ARM体系中,每个字单元包含4个字节单元或者两个半字单元.在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:big-endian和little-endian格式.在小端模式中,低位字节放在低地址,高位字节放在高地址;在大端模式中,低位字节放在高地址,高位字节放在低地址.

卢龙县17393785386: 为什么传奇客户端的大小有不一样呢?? -
道弯紫地: 有些SF是仿盛大版本的,只需要官方传奇加上SF登陆器就可以了. 而有的SF版本为了追求盛大官方不一样的玩法,就开放了很多盛大没有的道具和地图,以及怪物NPC,而这些当然是站空间的...

卢龙县17393785386: 为什么滑动变阻器有时调到最大端有时调到最小端?跟它的接法有关系吗?比如分压式限流式.谢谢达人. -
道弯紫地: 限流式 一般开始时调到最大,为了避免电阻过低引起短路(PS:实际操作不建议调到最大哦,因为害怕你以为是最大端,而实际上是最小端的情况出现.实际操作中是调到中间的). 分压式 一般开始时调到最小端,同样为了避免电压过大引起烧坏,短路的情况

卢龙县17393785386: 若某数字系统采用16位(2字节)来储存带符号数 - 9,采用补码,分别写出大小端模式下的这两个字节的内 -
道弯紫地: -9,采用16位补码,就是 FFF7H.存入存储器,有两种形式: FFH、F7H和 F7H、FFH.

卢龙县17393785386: 单片机的flash当EEPROM用要分大端小端么>? -
道弯紫地: 区分单片机是大小端:1、差芯片相关资料即可2、程序判断,简单描述如下 int a=0x1234; char *p=&a; if(*p == 0x34) printf("小端"); else printf("大端"); 单片机硬件规定的,比如某些arm芯片就有外围引脚用高低电平配置芯片是大端还是小端工作

卢龙县17393785386: 为什么ip结构体中的第一个字节还要分大小端来分别处理 -
道弯紫地: 随着嵌入式系统应用范围的不断扩展及网络应用的日益普及,使得越来越多的嵌入式系统需要支持网络功能.TCP/IP是目前一种被广泛采用的网络协议.TCP/IP是一套把因特网上的各种系统互连起来的协议组,已成为事实上最常用的网络标准...

卢龙县17393785386: 基金前端收费和后端收费有什么不同?该如何选择? -
道弯紫地: 后端收费指的则是你在购买开放式基金时并不支付申购费,等到卖出时才支付的付费方式.后端收费的设计目的是为了鼓励你能够长期持有基金,因此,后端收费的费率一般会随着你持有基金时间的增长而递减.某些基金甚至规定如果你能在持...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网