Как правило, самый младший бит - это битовый индекс 0, а самый старший бит - это битовый индекс 7. Используя эту терминологию, мы можем определить, установлен ли битовый индекс k, взяв поразрядно, а 1 сдвинут влевопо к.Если побитовый и ненулевой, то это означает, что индекс k имеет 1;в противном случае индекс k имеет значение 0. Итак:
def get_bit(byteval,idx):
return ((byteval&(1<<idx))!=0);
Это будет правильно определять значение битов в индексах 0 ... 7 байта, идущих справа налево (т.е. наименее значимыхбит к старшему значащему биту или, что то же самое, от 1-го места до 2 7 = 128).
Почему это работает Я решил добавить объяснение, почему это работает ...
1 << 0 равно 1 = 0000 00011 << 1 равно 2 = 0000 00101 << 2 равно 4 = 0000 0100</p>
Как видите, 1 <