Network order

来源:岁月联盟 编辑:zhu 时间:2010-02-08
  

   Big-endian(最高位字节在最前)和Little-endian(最低位字节在最前)是用来表述一组有序的字节数存放在计算机内存中时的顺序的术语。 最高位字节在最前 是将"高位字节" (在序列中最重要的值) 的一种存储顺序 (存储在最低级的存储地址). 最低位字节在最前是将"低位字节"(在序列中的最不重要的值) 首先存贮(在最低地址处)。例如,在一个使用最高位字节在最前的计算机中,十六进制数字4F52所需要的两个字节将被存储为4F52 (比如,如果4F 被储存 的地址是1000, 52 的存储地址就是1001)。在使用最低位字节在最前的系统内,这两个字节将被存储为 524F (52 存储在1000, 4F存储在1001)。IBM公司的370主机,(一种主要基于RISC计算机), 以及摩托罗拉公司的微型处理器使用的都是最高位字节在最前方式。传输控制协议(TCP)/网际协议(IP) 使用的也是最高位字节在最前( 因此最高位字节在最前有时也被称作网络规则)。对于使用从左向右阅读的语言的用户,这就象考虑存储一个字符或数字串一样自然 - 你会希望它以正常的顺序展示在你面前。 我们大都会把最高位字节在最前当作一种从前往后存储的方式,就象我们的阅读的时候一样。另一方面,因特尔公司的处理器 (CPU) 和 DEC 阿尔法,以及(至少有一部分)依靠它们进行的程序,使用的是最低位字节在最前。支持 最低位字节在最前 顺序的观点认为,当增加数值时, 需要在数字的左侧增加数字(数值较大的非指数的数位更多)。因此,在增加两个数时常常需要移动按 最高位字节在最前顺序存储的数字的所有数位上的数字,要向右移动所有的数字。而对于以最低位字节在最前 方式存储的数字来说,就连最不重要的字节也不用动,新的数字可以加在较高地址的右侧。这也就意味着一些计算机的操作可以更简便,速度可以更快。 象Java或FORTRAN这样的语言编辑器要弄清楚其目标编码将以什么方式存储。必要时,可以使用转换器把一种字节在最前转换为另一种字节在最前。 注意,无论是以最高位字节在最前 方式排列的字节顺序还是以最低位字节在最前方式排列的字节顺序, 每个字节的比特(数位)都是以最高位字节在最前方式排列的。也就是说,对于一个特定的存储数字来说,其整个比特(数位)串无所谓最高位字节在最前还是最低位字节在最前。例如,十六进制数字4F在与其他字节被存储在一个特定的地址范围时,无论它是先被存储的还是后被存储的,字节的比特(数位)顺序都将是: 01001111对于比特(数位)顺序来说,可能会有最高位字节在最前 或 最低位字节在最前 之分, 但是CPU和程序通常几乎都是以最高位字节在最前 比特(数位)顺序设计的。然而,在数据传输过程中,两种比特(数位)顺序可能都会有。 Eric Raymond 认为,因特网域名地址是以最低位字节在最前方式排列的。例如,我们的一个域名以 最高位字节在最前方式排列会是这样的: com.whatis.wwwBig-endian 和 little-endian源自Jonathan Swift的小说《格里佛游记》,在这部小说里Big-endian是一个从大的一头打碎鸡蛋("远古的方式")的政治派别,他们反抗侏儒国王,这个侏儒国王要求他的子民( little-endian)从小的一头打碎鸡蛋。

上一篇:neural network

图片内容