Проблема в том, что у меня есть массив байтов с 200 индексами, и я просто хочу проверить, что четвертый бит MyArray[75] равен нулю (0) или единице (1).
byte[] MyArray; //with 200 elements
//check the fourth BIT of MyArray[75]
Проблема в том, что у меня есть массив байтов с 200 индексами, и я просто хочу проверить, что четвертый бит MyArray[75] равен нулю (0) или единице (1).
byte[] MyArray; //with 200 elements
//check the fourth BIT of MyArray[75]
Четвертый бит в элементе 75?
if((MyArray[75] & 8) > 0) // bit is on
else // bit is off
Оператор & позволяет использовать значение в качестве маски.
xxxxxxxx = ?
00001000 = 8 &
----------------
0000?000 = 0 | 8
Вы можете использовать этот метод для сбора любых битовых значений, используя тот же метод.
1 = 00000001
2 = 00000010
4 = 00000100
8 = 00001000
16 = 00010000
32 = 00100000
64 = 01000000
128 = 10000000
Что-то типа:
if ( (MyArray[75] & (1 << 3)) != 0)
{
// it was a 1
}
Предполагая, что вы имели в виду 4-й бит справа.
И вы можете проверить System.Collections.BitArray
, просто чтобы убедиться, что вы не изобретаете велосипед.
1 << (pos-1)
для позиций с индексом 1 или оператор 1 << pos
для позиций с индексом 0.
- person maxwellb; 10.08.2009