2014-10-31 1 views
2

Мой вопрос очень прост и тривиальен, но я не нашел явного ответа.Где младший байт в массиве C

если есть массив С char a[2], где младший байт a[0] или a[1]

другими словами, нижний адрес или выше адрес?

+1

http://en.wikipedia.org/wiki/Endianness – Nit

+0

Это зависит от системы. См., Например, [здесь] (http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html) –

+7

Это совсем не зависит от конца ... Он определен пользователем. – indiv

ответ

2

Это зависит от использования, так что в основном вы его определяете.

Например, если вы используете char a[2], чтобы содержать 2-битное двоичное число (один из 00, 01, 10, 11), вы можете определить, что ваш бит LSB находится с правой стороны, то есть на a[1], поэтому номер 01 будет представлен строкой «01» (a[0] = 0, a[1] = 1). Во многих случаях этот выбор кажется естественным.

Однако вы можете решить, что ваши потребности лучше подходят для противоположного определения, и вы определите, что бит LSB находится слева, и в этом случае число 01 будет представлено строкой «10», ,

5

Концепция «значимости» имеет смысл только тогда, когда речь идет о блоке (например, бит или байт), принимает участие в , представляющем значение, состоящее из более чем одного такого устройства. Как и в комментарии indiv, массив из 2 char объектов не имеет неотъемлемого значения в качестве единственного значения. Если вы решите использовать его как таковой, вам решать, как вы интерпретируете два char s и присваиваете им числовое значение как единицу.

Смежные вопросы