对小端和大端的混淆

时间:2018-04-09 00:46:09

标签: endianness

我正在阅读一篇解释小端和大端之间差异的文章。据我所知,big endian首先将数据存储为“大端”,而小端将数据存储为“小端”。我的困惑在于以下文本块:

  

Big endian机器:我认为short是两个字节,所以我将把它们读掉:位置s是地址0(W或0x12),位置s + 1是地址1(X或0x34)。由于第一个字节最大(我是大端!),数字必须是256 *字节0 +字节1,或256 * W + X或0x1234。我将第一个字节乘以256(2 ^ 8),因为我需要将其移位8位。

我不明白为什么他们做了8位的移位。 另外,这是另一个我不理解的文本块:

  

在大端机器上我们看到:

     

字节:U N I X.   地点:0 1 2 3

     

哪个有意义。 U是“UN”中的最大字节,首先存储。 >同样适用于IX:我是最大的,并且先储存。

     

在小端机器上我们会看到:

     

Byte:N U X I   地点:0 1 2 3

如果我的理解是正确的,那么在小端机器上它不会是“INUX”吗? 完整的文章位于https://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/

如果有人能清楚这一点,那就太好了。

1 个答案:

答案 0 :(得分:0)

好吧,所以我理解现在有多大和小端的工作:

我将解决我理解第二块文字的问题。 基本上,在文章中,作者表示如果我们将“UNIX”这个词存储为shorts(不是long s),那么最终结果将是“NUXI”。 我现在将解决我理解第一个文本块的问题。 基本上,完成位移以便在存储器中切换字节的排列,以便在大端的情况下,最重要的字节是第一个,而在小端,最低有效字节是第一个。