【问题标题】:Where is least significant byte in C array [closed]C数组中的最低有效字节在哪里[关闭]
【发布时间】:2014-12-28 02:13:15
【问题描述】:

我的问题很简单很琐碎,但是我没有找到明确的答案。

如果有 C 数组 char a[2],其中最低有效字节 a[0]a[1]

换句话说,低地址还是高地址?

【问题讨论】:

  • 这取决于系统。例如,请参阅here
  • 它完全不依赖字节序...它是用户定义的。
  • 因为这是一个用户定义的数组,它取决于用户定义它是什么。如果您谈论的是单词中的最低有效字节(或更大的变量类型),那取决于系统(请参阅提供的链接Nit)。
  • 数组的最低有效字节”? “重要”指的是什么?

标签: c arrays endianness


【解决方案1】:

这取决于使用情况,所以基本上你定义它。

例如,如果您使用char a[2] 包含一个2 位二进制数(00、01、10、11 之一),您可以定义您的LSB 位在右侧,即a[1] ,因此数字 01 将由字符串“01”表示(a[0] = 0,a[1] = 1)。在许多情况下,这种选择似乎很自然。

但是,您可能会认为相反的定义更适合您的需求,并且您将定义您的 LSB 位在左侧,在这种情况下,数字 01 将由字符串“10”表示。

【讨论】:

    【解决方案2】:

    “重要性”的概念只有在所讨论的单位(例如位或字节)参与表示一个由多个此类单位组成的值时才有意义。正如在 indiv 的评论中,2 个 char 对象的数组作为单个值没有内在含义。如果您选择这样使用它,则取决于您如何解释这两个 chars 并将它们作为一个单元分配数字含义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多