-
大端和大端
2017-08-15 16:59:211. 什么是大端,什么是小端: 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址...1. 什么是大端,什么是小端:
所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
2.为什么会有大小端:
为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为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处理器还可以由硬件来选择是大端模式还是小端模式。
3.大小端在内存中的存放方式举例:
例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址
0x4000
0x4001
存放内容
0x34
0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址
0x4000
0x4001
存放内容
0x12
0x34
32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x78
0x56
0x34
0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x12
0x34
0x56
0x78
为了便于记忆,可以把大端记成高尾端,小端记成低尾端
比如11223344看成"11223344",末尾是个'\0','11'到'44'个占用一个存储单元,那么它的尾端很显然是44,前面的高还是低就表示尾端放在高地址还是低地址,它在内存中的放法非常直观,如下图:
4.如何测试编译器是大端还是小端:
if(ByteOrder.nativeOrder()==ByteOrder.BIG_ENDIAN) System.out.println("big endian"); else System.out.println("little endian");
输出为小端 -
大端序
2018-07-19 15:42:26大端序: 高位字节在低地址,tcp/ip协议就是用的大端序,所以也叫网络序。 例子:0x12345678 内存中地址从低到高为: 大端序:12 34 56 78 小端序: 78 56 34 12 一句话:高字节在低地址的是大端,低字节在低...大端序:
高位字节在低地址,tcp/ip协议就是用的大端序,所以也叫网络序。
例子:0x12345678
内存中地址从低到高为:
大端序:12 34 56 78
小端序: 78 56 34 12
一句话:高字节在低地址的是大端,低字节在低地址的是小端
-
大端小端
2019-10-23 06:24:48大端小端1 介绍1.1 简介1.2 举例1.3 小端的好处2 大端小端的具体应用3 字节序转换参考 1 介绍 1.1 简介 计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。 举例来说,数值...1 介绍
1.1 简介
计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。
举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。- 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
- 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。
1.2 举例
0x1234567的大端字节序和小端字节序的写法如下图
1.3 小端的好处
- 计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。
- 常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式
- 但是,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。
2 大端小端的具体应用
待加
3 字节序转换
待加
参考
1、理解字节序–阮一峰
2、理解字节序 大端字节序和小端字节序
3、[c/c++ ]字节序与大小端转换
4、大端模式和小端模式转化
5、How to teach endian
6、详解大端模式和小端模式 -
java 大端模式_记住!大端小端
2021-03-04 04:54:40关于大端和小端,自己已经记了很多次了,可每次都忘,今天创新工场笔试,第一道题就是关于大端小端的知识,可惜,自己又忘了,怎么回事,说到底,是自己同时记大端和小端,导致容易混淆,现在只记小端了:小端,是数...关于大端和小端,自己已经记了很多次了,可每次都忘,今天创新工场笔试,第一道题就是关于大端小端的知识,可惜,自己又忘了,怎么回事,说到底,是自己同时记大端和小端,导致容易混淆,现在只记小端了:小端,是数的高位存在内存地址的高位,小高高!
下面是从网上摘抄的一些东东,帮助理解和记忆,来自http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html:
端模式(Endian)的这个词出自Jonathan
Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big
Endian,从尖头开始将鸡蛋敲开的人被归为Littile
Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big
Endian和Little
Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存储器中的存放顺序。下文举例说明在计算机中大小端模式的区别。
如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本书使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。
地址偏移
大端模式
小端模式
0x00
12(OP0)
78(OP3)
0x01
34(OP1)
56(OP2)
0x02
56(OP2)
34(OP1)
0x03
78(OP3)
12(OP0)
如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。
地址偏移
大端模式
小端模式
0x00
12(OP0)
34(OP1)
0x01
34(OP1)
12(OP0)
由上表所知,采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将
高位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存
放,其孰优孰劣也没有定论。
有的处理器系统采用了小端方式进行数据存放,如Intel的奔腾。有的处理器系统采用了大端方式进行数据存放,如IBM半导体和Freescale的PowerPC处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。
因此在一个处理器系统中,有可能存在大端和小端模式同时存在的现象。这一现象为系统的软硬件设计带来了不小的麻烦,这要求系统设计工程师,必须深入理解大端和小端模式的差别。大端与小端模式的差别体现在一个处理器的寄存器,指令集,系统总线等各个层次中。
-
mips-linux-gcc大端
2017-09-18 16:30:33mips交叉编译器 32位 大端模式 (ubuntu12 gcc4.9.4生成) 大端模式 大端模式 大端模式 大端模式 大端模式 大端模式 -
什么是大端小端 and 如何判断大端小端
2021-04-04 16:44:24大端存储是指低字节存储在高地址; 小端存储是指低字节存储在低地址。 2. 内存大小端跟网络大小端的区别? 网络字节序: TCP/IP协议规定了在网络上必须采用网络字节顺序,先收到的字节为高位,最后收到的字节为低位... -
arm 大端还是小端_C语言 大端小端详解
2020-12-11 07:13:41一、什么是大端和小端所谓的大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。所谓的小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。简单来说:大端——高... -
大端 小端
2021-02-25 09:42:18大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。 用数据0x1234ABCD 来做演示,... -
详解大端模式和小端模式
2011-11-16 20:21:29详解大端模式和小端模式 一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因... -
大端存储和小端存储_C语言 大端小端详解
2021-01-19 11:37:23一、什么是大端和小端所谓的大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。所谓的小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。简单来说:大端——高... -
C# 大端小端转换
2019-09-02 11:40:19关于大端和小端,是一个有趣的问题。本文告诉大家如何在C#转换大端和小端。 这里有一个有趣的故事,请看详解大端模式和小端模式 - CSDN博客 默认的 C# 使用的是小端,如果收到的消息是大端,那么就会出现... -
小端模式和大端模式_大端模式和小端模式
2020-11-28 18:24:00一、什么是大端,什么是小端0x123456在内存中的存储方式- 大端模式低地址 - 小端模式低地址 不难看出大端模式比较符合人的直观认识二、为什么会有大小端之分1. 一开始是由于不同架构的CPU处理多个字节数据的顺序不... -
网络传输大端序_大端、小端与网络字节序
2021-02-05 21:30:02大端(Big-Endian),小端(Little-Endian)以及网络字节序的概念在编程中经常会遇到。网络字节序(Network Byte Order)一般是指大端(Big-Endian,对大部分网络传输协议而言)传输,大端小端的概念是面向多字节数据类型的... -
什么是大端小端以及如何判断大端小端
2019-07-09 19:47:52大端是指低字节存储在高地址;小端存储是指低字节存储在低地址。我们可以根据联合体来判断该系统是大端还是小端。因为联合体变量总是从低地址存储。 ... -
TPM大端模式
2019-09-21 10:11:171. Big-Endian(BE)大端模式 数据是按照,“高字节、低存储”,即高字节存储在低地址,符合人们直观感受 2. Little-Endian(LE)小端模式 数据是按照,“低字节,低存储”,即低字节存储在低地址,方便计算机做... -
网络传输大端序_大端法、小端法、网络字节序
2021-01-17 14:49:08http://blog.csdn.net/fatshaw/article/details/5690073网络字节序与主机字节序关于主机字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的... -
大端存储和小端存储_大端模式和小端模式
2021-01-15 11:48:34一、什么是大端,什么是小端0x123456在内存中的存储方式- 大端模式 低地址 -----> 高地址 0x12 | 0x34 | 0x56 - 小端模式 低地址 -----> 高地址 0x56 | 0x34 | 0x12 不难看出大端模式比较符合人的直观认识... -
大端与小端
2020-11-21 17:07:23大端序与小端序 解释 一些计算机设计师认为,应按从左至右的顺序在 RAM 与 CPU 中存储数字,这种模式称为小端序。另一些计算机设计师则倾向于按从右至左的顺序在存储器中写入数据,这种模式称为大端序。因此,根据... -
大端和小端
2021-03-12 13:36:05大端:低地址存放高字节数据。 考点: 如何通过代码判断当前系统是大端还是小端? 代码/具体阐述: 实现的算法:定义一个大于一个字节的变量查找该变量的低地址存放的是低字 节数据还是高字节数据。 可以用两种方式...