首页 > 编程知识 正文

大端地址和小端地址,小段指向大端

时间:2023-05-06 03:47:27 阅读:162612 作者:4140

以前,经常遇到大字节序、小字节序、网络字节序、字节序、主机字节序等概念经常被记住和忘记。 使用的时候查一下很花时间,结果是因为不完全理解。 这次试着把它记录下来吧。 完全理解这个吧。

我查了一下网上的资料,果然不可信。 于是,我查了多本书,拍了截图。 便于以后查阅和复习。 如果有侵权的话,请联系我立即删除。

前言:我个人认为应该分为存储器中的大小方和网络中的大小方。 当然这是我个人的理解,还不一定正确,需要验证。

一.记忆中的大端和小端摘录《ARM体系结构与编程》

二.摘录存储中的大端和小端和网络中的大小端《UNIX网络编程卷1:套接字联网API (第三版)》

对于由2个字节组成的16位整数,有两种方法可以将这2个字节存储在内存中。 一种方法是将低位字节存储在起始地址中,称为小字节序。 另一种方法是将称为大字节序的高位字节存储在起始地址中。

图3-9的上部显示内存地址的增加方向为从右到左,下部显示内存地址的增加方向为从左到右。 它还指示最高有效位(most significant bit,MSB )是该16位值的最左比特,最低有效位(least significant bit,LSB )是该16位值的最右比特

术语“小端序”和“大端序”指示多个字节值的哪个末端(小端序或大端序)存储在该值的开头地址中。

这两种字节序都没有标准的,系统都在使用。 一个系统使用的字节序称为主机字节序,可以通过以下程序输出主机字节序: 在短整数变量中存储2字节的值0x0102,查看上面的地址a对应的连续字节c[0]和上面的地址A 1对应的c[1],确定字节顺序。

三、网上大小端摘自《TCP/IP详解 卷1:协议》

四、摘录其他博客:博客在网上传输的数据都是字节流,对于一个多字节的数值,在进行网络传输时,先传输哪些字节? 即,在接收端接收到第一个字节时,将该字节作为高位字节还是低位字节是有意义的问题:

UDP/TCP/IP协议规定:将接收的第一个字节作为高位字节处理,要求发送方发送的第一个字节为高位字节。 发送方发送数据时,发送的第一个字节是其数值与存储器内的起始地址对应的字节,也就是说,发送该数值与存储器内的起始地址对应的字节的第一个高位字节

因此,网络的字节序是大字节序,一些系统的本机字节序是小字节序,一些是大字节序,为了确保传输顺序的一致性,互联网协议是大字节序

这是符合CC 4.0 BY-SA版权协议的其他博客的原创文章。 请附上原文出处的链接和本声明。

本文链接: https://blog.csdn.net/jmw 1407/article/details/108637540

二、在电脑上,关于地址的说明,很少使用“大”和“小”这样的表达; 相对应地,多使用“高”和“低”; 遗憾的是,这个术语照字义翻译就是“大端”和“小端”,难怪会让人迷惑。

但是,给我的启示是,在帅气的懒汉翻译的《程序设计实践》中,这个术语不是翻译成“大端”和小端,而是翻译成“高尾端”和“低尾端”。 这个很容易理解。 例如,11223344是" 11223344 ",末尾是"0"。

“高/低尾端”比“大/小端”更难迷路。 但根据个人经验,在市面上的书籍和网上各种资料中,遗憾的是,前者已经很少见,多见的是后者。 幸运的是,这两组形容词中,正好“高”和“大”对应,“低”和“小”对应。 既然高尾端对应大端,低尾端对应小端,那么坚实的樱桃中就可以看到大端和小端这两个术语,在大脑中可以把它们转换成高尾端和低尾端。 此时,根据前面的理解,不用想起来,只要考虑高低字面的意思,就能想起它们的意思。 但奇怪的是,同样由帅气的懒汉翻译的《编程原本》(elementsofprogramming )将big-endian翻译成了大尾格式(第一章)。

版权声明:这一段是其他博客的原创文章。 转载请向原博主咨询。

链接: https://www.cn blogs.com/isandywu/p/10788990.html

博客的小字节序位于低位(低位字节存在内存行地址,字节的高低顺序和内存的高低顺序相同),大字节序位于高位。 (其中,“之前”与存储器行地址接近,存储在硬盘中意味着先写入该字节。)。 在概念上,字节序也称为主机顺序。

链接: https://blog.csdn.net/Anning ZTE/article/details/52125665

博客四(如果LSByte在MSByte之前,即LSB是低地址,则其字节顺序是小端序(; 反之为大端序

链接:https://social.technet.microsoft.com/Forums/en-US/471e01d4-2614-441c-b068-39259368998f?forum=1761

总结

根据以上看哪种方式适合方便你记忆,选择一种即可,根据《UNIX网络编程卷1》中的术语我认为可以这样记:

起始地址存储大端(即高字节)就是大端

起始地址存储小端(即低字节)就是小端

a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
c) 网络字节序:TCP/IP各层协议将字节序定义为大端(Big-Endian),因此TCP/IP协议中使用的字节序通常称之为网络字节序。

 

有些书籍或文章中称低位字节、低字节、低有效位、最低有效位、低位都是一个意思,都是指是低字节。

同理高位字节、高字节、高有效位、最高有效位、高位都是一个意思,都是指是高字节。

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。