endian恩典365
本文目录一览:
- 1、Big Endian与Little Endian字节存储顺序
- 2、linux little endian和big endian是什么意思
- 3、Big Endian 和 Little Endian的区别
Big Endian与Little Endian字节存储顺序
不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序。分为小端格式和大端格式(Little-EndianBig-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;
linux little endian和big endian是什么意思
1.故事的起源 “endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命,另一个丢了王位。 我们一般将endian翻译成“字节序”,将big endian和little endian称作“大尾”和“小尾”。 2.什么是Big Endian和Little Endian? 在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的最右边部分(也就是数据的最低位部分)。 比如某些文件需要在不同平台处理,或者通过Socket通信。这方面我们可以借助ntohl(), ntohs(), htonl(), and htons()函数进行格式转换, 个人补充:一个操作数作htonl或ntohl结果不一定相同,当机器字节序跟网络字节序刚好是仅仅big endian和little endian的区别时是相同的。 3. 如何理解Big Endian和Little Endian 举个例子: int a = 1; a这个数本身的16进制表示是0x00 00 00 01 在内存中怎么存储呢? 如果你的CPU是intel x86架构的(基本上就是通常我们说的奔腾cpu),那么就是0x01 0x00 0x00 0x00 , 这也就是所谓的little-endian, 低字节存放在内存的低位. 如果你的CPU是老式AMD系列的(很老很老的那种,因为最新的AMD系列已经是x86架构了), 它的字节序就是big-endian, 其内存存储就是 0x00 0x00 0x00 0x01在内存中从高字节开始存放。 现在世界上绝大多数的CPU都是little-endian。 4. 了解big-endian和little-endian有什么作用? 一个重要的作用就是了解在网络上不同的机器间的数据如何传输。 假设我们在网络上有两台机器A和B,
Big Endian 和 Little Endian的区别
Big Endian 和 Little Endian的区别:
在设计计算机系统的时候,有两种处理内存中数据的方法。一种叫为little-endian,存放在内存中最低位的数值是来自数据的
最右边部分(也就是数据的最低位部分)。比如一个16进制数字0x12345678,在内存存放的方式如下:
低地址 ------------------ 高地址
####################################################
值 #0111,1000 #0101,0110 # 0011,0100 # 0001,0010 #
####################################################
地址 # 100 # 101 # 102 # 103 #
####################################################
另一种称为big-endian,正好相反,存放在内存中最低位的数值是来自数据的最左边边部分(也就是数据的最高为部分)。
比如一个16进制数字0x12345678,在内存存放的方式如下:
低地址 ------------------ 高地址
####################################################
值 # 0001,0010 #0011,0100 # 0101,0110 # 0111,1000 #
####################################################
地址 # 100 # 101 # 102 # 103 #
####################################################
从上面的例子可以看到,采用big endian方式存储数据是符合我们人类的思维习惯的
big endian:是指低地址存放最高有效字节(MSB:Most Significant Byte, 最高有效字节),
little endian:则是低地址存放最低有效字节(LSB:Least Significant Byte, 最低有效字节)
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。
IBM, Motorola(Power PC), Sun的机器一般采用大端(big endian)方式存储数据。而x86系列则采用
little endian方式存储数据
是Little Endian还是Big Endian与操作系统和芯片类型都有关系。 具体情形参考处理器手册。
2. 如何判断系统是Big Endian还是Little Endian
在/usr/include/中(包括子目录)查找字符串BYTE_ORDER(或_BYTE_ORDER, __BYTE_ORDER),确定其值。
这个值一般在endian.h或machine/endian.h文件中可以找到,有时在feature.h中,不同的操作系统可能
有所不同。一般来说,Little Endian系统BYTE_ORDER(或_BYTE_ORDER,__BYTE_ORDER)为1234,Big Endian系统为4321
endian的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于恩典365、endian的信息别忘了在本站进行查找喔。
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~