BitArray и порядок битов
От: dr. Acula Украина  
Дата: 25.06.14 14:09
Оценка:
Коллеги, можете рассказать, почему порядок байтов при обращении к 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("");



    [0]:    True
    [1]:    True
    [2]:    True
    [3]:    True
    [4]:    True
    [5]:    True
    [6]:    True
    [7]:    True
    [8]:    True
    [9]:    True
    [10]:   True
    [11]:   True
    [12]:   True
    [13]:   True
    [14]:   False
    [15]:   False


Я упускаю логичное оюоснование такого поведения?
Re: BitArray и порядок битов
От: dr. Acula Украина  
Дата: 25.06.14 14:23
Оценка:
DA>Я упускаю логичное оюоснование такого поведения?

Да, читал http://stackoverflow.com/questions/9066831/bitarray-returns-bits-the-wrong-way-around.
Re: BitArray и порядок битов
От: hardcase Пират http://nemerle.org
Дата: 25.06.14 14:24
Оценка:
Здравствуйте, dr. Acula, Вы писали:

DA>Я упускаю логичное оюоснование такого поведения?


А какое поведение ты видишь логичным?
/* иЗвиНите зА неРовнЫй поЧерК */
Re: BitArray и порядок битов
От: hardcase Пират http://nemerle.org
Дата: 25.06.14 14:28
Оценка:
Здравствуйте, dr. Acula, Вы писали:

DA>Коллеги, можете рассказать, почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?


Биты внутри байта нумеруются от младших разрядов к старшим, числа же в европейской культуре записываются слева направо от старших разрядов к младшим.
/* иЗвиНите зА неРовнЫй поЧерК */
Re: BitArray и порядок битов
От: nikov США http://www.linkedin.com/in/nikov
Дата: 25.06.14 15:01
Оценка: +2 :))
Здравствуйте, dr. Acula, Вы писали:

DA> а биты внутри байта нумеруются справа-налево?


Это зависит от того, с какой стороны смотреть на чип памяти.
Re[2]: BitArray и порядок битов
От: dr. Acula Украина  
Дата: 25.06.14 15:33
Оценка:
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("");


Там порядок такой как в конструкторе массива.

Но то такое, жить можно, только нужно не забывать
Re[2]: BitArray и порядок битов
От: hardcase Пират http://nemerle.org
Дата: 25.06.14 15:59
Оценка:
Здравствуйте, nikov, Вы писали:

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


Так вопрос-то не про конечность (endian)
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: BitArray и порядок битов
От: nikov США http://www.linkedin.com/in/nikov
Дата: 25.06.14 17:05
Оценка:
Здравствуйте, hardcase, Вы писали:

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


H>Так вопрос-то не про конечность (endian)


Если я посмотрю на чип с другой стороны, то бит, который был справа, окажется слева, верно?
Re[3]: BitArray и порядок битов
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.06.14 17:35
Оценка: +1
Здравствуйте, hardcase, Вы писали:
H>Так вопрос-то не про конечность (endian)
А по-моему — строго про endianness.
Вот как выглядят ваши байты:
11111111
00111111

Итератор перебирает их справа-налево и сверху-вниз.
Порядок перебора байтов совпадает с порядком их скармливания в конструктор.
Порядок перебора байтов внутри битов соответствует традиции нумерации: первым битом мы всегда называем самый младший разряд.
Благодаря этому, перебор new BitArray(new byte[] {0x1}) даст предсказуемый 0:True, а не семь False и 8:True.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: BitArray и порядок битов
От: tretyak Украина www.dot.net.ua
Дата: 29.06.14 12:30
Оценка:
Здравствуйте, dr. Acula, Вы писали:

DA>…почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?



Высочайшее достижение нейтронной мегалоплазмы! — … — ротор поля наподобие дивергенции градуирует себя вдоль спина и там, внутре,
обращает материю вопроса в спиритуальные электрические вихри, из коих и возникает синекдоха отвечания…


компрене-ву?

ротор поля наподобие дивергенции градуирует себя вдоль спина


-=mxm™=-
Re: BitArray и порядок битов
От: BulatZiganshin  
Дата: 29.06.14 13:14
Оценка:
Здравствуйте, dr. Acula, Вы писали:

DA>Коллеги, можете рассказать, почему порядок байтов при обращении к BitArray слева-направо, а биты внутри байта нумеруются справа-налево?


попробуй написать реализацию bitget/bitset и вопросы сами отпадут
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.