Применение битовых операций.
1. Если в регистре нужно установить бит применяем операцию сдвига.
Это особенно полезно в тех случаях,когда бит имеет имя.
Код:
<REG> |= (1 << <bit>);
2. Если нужно сбросить бит применяем ту же операцию но с ~.
Код:
<REG> &= ~(1 << <bit>);
Тоже самое можно сделать и другим способом
Код:
<REG> |= 0x04; //установили второй бит.
<REG> |= 0b00000100; //установили второй бит.
3. На месте левого операнда в операции сдвига может быть целый байт или часть его.
Код:
<VAR> = (0xF0 >> 4); // Здесь VAR =: 0x0F
<VAR> = (0xFF >> 4); // Здесь VAR =: 0x0F
Из этих примеров видно что МЛ.ниббл теряется.
Это нужно в тех случаях когда нам нужен только СТ.ниббл.
4. Если нам нужно проверить конкретный бит в регистре мы применяем битовую маску.
Код:
<REG> & (1 << <bit>)
5. Битовая маска применяется с операцией И(&).
Код:
if(<REG> & (1 << <bit>)) //Маска маскирует нулём все биты кроме одного <bit>
...
6. т.к условие проверяется на неравенство нулю, то если бит =1 условие выполнено (true),
а если проверяем на наличие нуля, то используем операцию НЕ(!),операция небитовая.
Код:
if(!(<REG> & (1 << <bit>)))
...
7. Если нужно применить маску более чем с одним битом делаем следущее:
Код:
<VAR1> = <VAR> & 0xOF; //Если VAR == 0xFF то VAR1 будет = 0x0F
фуух написал) если вы узнали чтото новое из этого поддержите автора