Коллеги, можете рассказать, почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?
byte[] b = { 0xFF, 0x3F };
System.Collections.BitArray ba = new System.Collections.BitArray( b);
int i = 0;
foreach (Object obj in ba)
{
Debug.WriteLine(" [{0}]: {1}", i++, obj);
}
Debug.WriteLine("");
Здравствуйте, dr. Acula, Вы писали:
DA>Коллеги, можете рассказать, почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?
Биты внутри байта нумеруются от младших разрядов к старшим, числа же в европейской культуре записываются слева направо от старших разрядов к младшим.
DA>>Я упускаю логичное оюоснование такого поведения?
H>А какое поведение ты видишь логичным?
с точки зрения, например, SNMP логичнее иметь сквозную нумерацию слева направо.
Т.е. 0 — 7, 8 — 15, 16 — 23, ...
А не 7 — 0, 15 — 8, 23 — 16...
Если уж название BitArray, то вести себя нужно, ИМХО, как массив.
Например, поведение отличается, если сконструировать BitArray из bool.
bool[] b = { true, true, true, true, true, true, true, true,
false, false, true, true, true, true, true, true};
System.Collections.BitArray ba = new System.Collections.BitArray(b);
int i = 0;
foreach (Object obj in ba)
{
Debug.WriteLine(" [{0}]: {1}", i++, obj);
}
Debug.WriteLine("");
Здравствуйте, hardcase, Вы писали: H>Так вопрос-то не про конечность (endian)
А по-моему — строго про endianness.
Вот как выглядят ваши байты:
11111111
00111111
Итератор перебирает их справа-налево и сверху-вниз.
Порядок перебора байтов совпадает с порядком их скармливания в конструктор.
Порядок перебора байтов внутри битов соответствует традиции нумерации: первым битом мы всегда называем самый младший разряд.
Благодаря этому, перебор new BitArray(new byte[] {0x1}) даст предсказуемый 0:True, а не семь False и 8:True.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, dr. Acula, Вы писали:
DA>…почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?
Высочайшее достижение нейтронной мегалоплазмы! — … — ротор поля наподобие дивергенции градуирует себя вдоль спина и там, внутре,
обращает материю вопроса в спиритуальные электрические вихри, из коих и возникает синекдоха отвечания…
компрене-ву?
ротор поля наподобие дивергенции градуирует себя вдоль спина
Здравствуйте, dr. Acula, Вы писали:
DA>Коллеги, можете рассказать, почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?
попробуй написать реализацию bitget/bitset и вопросы сами отпадут