导航:首页 > 源码编译 > 编译器大端格式和小端格式

编译器大端格式和小端格式

发布时间:2023-04-01 02:35:39

① 大端模式、小端模式和MSB、LSB是一个概念吗两者有何区别

不是同一个概念。
大端模式:高字节放入低地址。
小端渣旁模式:高字节放入高地址。
一般在单戚漏片机系统中要分清。常用的X86、GCC-AVR是小端模式;而KEIL
C51为大端模式。还有其他的编译环境都有默认的模式,具体看变异环境说明。高梁烂
MSB是一串数据的最高位。
LSB是一串数据的最低位。
一般在AD转换的DATASHEET中会提到。

② ARM里的大端格式和小端格式分别是什么意思呀

leshen750说的没错,给你举个例子仔孝
int
a
=
0x12345678;
a是四字节的int类型变量,需要占四个字节空间,哗圆假设变量a的首地址是0x2000,那么数据存储在地址念芦稿中的格式如下:
0x2000
0x2001
0x2002
0x2003
地址
0x12
0x34
0x56
0x78
大端模式存储
0x78
0x56
0x34
0x12
小端模式存储

③ 嵌入式系统中 什么是大小端格式

定义:
大端模式,是指数据的高位拆镇,保存在迹型内存的低地址中,(而数据的低位,保存在内存的高地址中);

小端模式,是指数据的高位保存在内存的高地址中,(而数据的低位保存在内存的姿御猜低地址中)。

举例:
int a = 0x12345678; //a里面存放一个16进制的数,a是int型,并占4个字节,现在假设a的首地址是:0x2000。则有:

低地址 ----------------->>> 高地址
0x2000 0x2001 0x2002 0x2003 地址
0x12 0x34 0x56 0x78 大端模式存储
0x78 0x56 0x34 0x12 小端模式存储

④ 小端和大端的区别

大端模式和小端模式的区别:

在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看困告具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

大端模式:

字数据的高字节存储在低地址宏兆中,而字数据的低字节则存放在高地址中。

小端模式:

与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。

采用大端方式进行数据存放符合人类的汪绝明正常思维,而采用小端方式进行数据存放利于计算机处理。

⑤ 编译器能指定大小端么

大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中
小端模式,是指数据的高字节保存在内存的高地址中
而数据的低字节保存在内存的低地址中
上面c是一个共用体,给共用体中的a赋值为1.然后读取b是否为1,当b为1是说明是小端模式,b为0则说明是大端模式。

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

  这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为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]),之后再进行发送才可以得到正确的数据。

⑦ 大端模式和小端模式

具体如下:


1、大端模式:

大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式类似于把数据当作字符串顺序处理。

地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。

在大端模式下,前16位应该这样读: e6 84 6c 4e ( 假设int占4个字节)。

记忆方法: 地址的增长顺序与值的增长顺序相反。

2、小端模式例子:

0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000。

0000440: b484 6c4e 004e ed00 0000 0000 0100 0000。

在小端模式下,前16位应该这样读: 4e 6c 84 e6( 假设int占4个字节)。

记忆方法: 地址的增长顺序与值的增长顺序相同。

大小端模式:

为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 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处理器还可以由硬件来选择是大端模式还是小端模式。

⑧ Big Endian与Little Endian字节存储顺序

不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序。分为小端格式和大端格式(Little-Endian&Big-Endian):

比如0x1234; 低8位是34,高8位是12;如果它们分配的内存其实地址是0x0001,
那么如果是大端存储,那么0x0001内存低位地址存放高位字节12;如果是小端存储,那么0x0001内存低位地址存放低位字节34,0x0002存放12。

据Jargon File记载,endian这个词来源于Jonathan Swift在1726年写的讽刺小说 "Gulliver's Travels"(《格利佛游记》)。该小说在描述Gulliver畅游小人国时碰到了如下的一个场景。在小人国里的小人因为非常小(身高6英寸)所以总是碰到一些意想不到的问题。有一次因为对水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开的争论而引发了一场战争,并形成了两支截然对立的队伍:支持从大的一端剥开的人Swift就称作Big-Endians,而支持从小的一端剥开的人就称作Little-Endians......(后缀ian表明的就是支持某种观点的人)。

1980年,Danny Cohen在其着名的论文"On Holy Wars and a Plea for Peace"中为了平息一场关于在消息中字节该以什么样的顺序进行传送的争论而引用了该词。该文中,Cohen非常形象贴切地把支持从一个消带含息序列的最高位开始传送的那伙人叫做Big-Endians,支持从最低位开始传送的相对应地叫做Little-Endians。此后Endian这个词便随着这篇论文而被广为采用。

little endian和big endian是表示计算机字节顺序的两种格式,所谓的字节顺序指的是长度跨越多个字节的数据的存放形式.

假设从地址0x00000000开始的一个字中保存有数据0x1234abcd,那么在两种不同的内存顺序的机器上从字节的角度去看的话分别表示为:

需要特别说明的是,以上假设机器是每个内派行悄存单元以8位即一个字节为单位的. 简单的说,little endian把低字节存放在内存的低位;而big endian将低字节存放在内存的高位.

现在主流的CPU,intel系列的是采用的little endian的格式存放数据,而motorola系列的CPU采用的是big endian.

比如: int x, 它的地址为0x100。 那么它占据了内存中的Ox100, 0x101, 0x102, 0x103这四个字节(32位系统,所以int占用4个字节)。

上面只是内存字节组织的一种情况: 多字节对象在内存中的组织有一般有两种约定。 考虑一个W位的整数。它的各位表达如下:
Xw-1, Xw-2, ... , X1, X0,它的
MSB (Most Significant Byte, 最高有效字节)为 Xw-1, Xw-2, ... Xw-8;
LSB (Least Significant Byte, 最低有效字节)为 X7,X6,..., X0。
其余的字节位于MSB, LSB之间。

这就引出了大端(Big Endian)与小端(Little Endian)的问题。如果LSB在MSB前面, 既LSB是低地址, 则该机器是小端; 反之则是大端。

对于数据中跨越多个字节的对象, 我们必须为尘渣它建立这样的约定:

对于跨越多个字节的对象,一般它所占的字节都是连续的,它的地址等于它所占字节最低地址。(链表可能是个例外, 但链表的地址可看作链表头的地址)。

import java.nio.ByteOrder;

⑨ 详解大端模式和小端模式

字节顺序 ,又称 端序 尾序 (英语: Endianness )。在友晌计算机科学计算机科学")领域中,是跨越多字节的程序对象的存储规则。
在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在C语言中,一个类型为 int 的变量 x 地址为 0x100 ,那么其对应地址表达式 &x 的值为 0x100 。且 x 的四个字节将被存储在存储器的 0x100, 0x101, 0x102, 0x103 位置。

在计算机中一般讲字节序分为两类: Big-Endian (大端字节序) 和 Little-Endian 。好搜锋
a) Little-Endian 高位字节在前,低位字节在后。
b) Big-Endian 低位字节在前,高位字节在后。
c) 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序。
举个小例子:
整数127(十进制)在计算机(64位)中大/小端字节序

在x86的计算机中,一般漏拍采用的是小端字节序

输出

⑩ 大端模式和小端模式

大端模式(Big-Endian)又称大端字节序,由于在网络传输中一般使用的是大端模式,所以也叫网络字节序。

在大端模式中,将高位字节放在低位地址,低位字节放在高位地址。

举个例子,数值 0x12345678 ,其中 0x12 这一端是高位字节, 0x78 这一端是低位字节。

该数值的存储顺序是这样的:

大端模式符合我们阅读和书写的方式,都是从左到右的。比如 12345678 ,我们只需要按照从左到右的顺序进行阅读和书写就是大端模式的存储顺序了。

小端模式(Little-Endian)又称小端字节序,由于大多数计算机内部处理使用的是小端模式,所以也叫主机序。

在小端模式中,将高位字节放在高位地址,低位字节放在低位地址。

小端模式比较符合我们人类的思维模式,大的放大的那一边,小的放小的那一边。但是在计算机中存储的顺序与慎尘我们看到的顺序是相反的。

对于早期的计算机来说,先处理低位字节效率比较高,因为计算都是从低位开始的,所以大多数计算机内部处理使用的是小端模式。但是计算机发展到现在,计算机的处理器相较于以前已经进步很多了,先处理高位还是低位字节的影响已经可以忽略,但是为了向后兼容,保留了大/小端模式。

大小端模式各有优势:小端模式强制转换类型时不需要调整字节内容,直接截取低字节即可;大端模式由于符号位为第一个字节,很方便判断正负。

大端模式更适合程序员阅读,因为看到的内容与输出的内容是一致的。

计算机在处理数据的时候,只会按照顺序去读取字宽早禅节,不关心数睁脊据是大端模式还是小端模式。

程序在读取到数据后,需要判断计算机的大小端模式,来决定是否需要进行大小端转换。

如果读到的第一个字节是高位字节,那么就是大端模式;反之,如果读到的第一个字节是低位字节,那么就是小端模式。

阅读全文

与编译器大端格式和小端格式相关的资料

热点内容
付费电影免费看。 浏览:843
白领解压培训 浏览:577
密码加密用在什么地方 浏览:12
python教程100字 浏览:442
pdf小马 浏览:982
马云入股服务器 浏览:934
sdca哪个文件夹最好用 浏览:991
海猫电影网 浏览:32
程序员一天编程多少个小时 浏览:62
java与模式下载 浏览:649
javaintlong区别 浏览:688
刀塔2如何选择中国服务器 浏览:810
英文剧,7个孩子 浏览:246
哈利波特电影名英文名 浏览:51
可以看污的软件下载 浏览:19
好看网站推荐 浏览:861
iphone文件夹设封面 浏览:249
日本电影盔甲僵尸 浏览:615
手机怎么创建minecraft服务器 浏览:488