Слайд 6
Побитовый оператор И: &
Операция & может быть использована для очищения (сбрасывания
значения) бита
Любой бит одного из операндов, равный 0, обнуляет значение соответствующего бита в результате
Например, следующая функция читает символ из порта модема и обнуляет бит контроля четности:
char get_char_from_modem(void)
{
char ch;
ch = read_modem(); /* чтение символа из порта модема */
return(ch & 127);
}
Бит контроля четности, находящийся в 8-м разряде байта, обнуляется с помощью операции И. При этом в качестве второго операнда выбирается число, имеющее 1 в разрядах от 1 до 7, и 0 в 8-м разряде. Именно таким числом и является 127, поскольку все биты двоичного представления числа 127, кроме старшего, равны 1. Выражение ch & 127 означает попарное применение операции И ко всем битам, составялющим значение переменной ch, и битам числа 127. В результате все биты, кроме старшего, остаются без изменения, а старший обнуляется:
Бит контроля четности - 8 бит
1100 0001 переменная ch содержит символ 'A' с битом четности
0111 1111 двоичное представление числа 127
& --------- поразрядная операция И
0100 0001 символ 'A' с обнуленным битом контроля четности