Проверка двух соседних битов - C (СИ)
Формулировка задачи:
Всем привет!
Имеется 2 битовые маски из N битов, причем N четное число. Выполняем логическое ИЛИ над ними. Получаем новую маску, состоящую из N бит.
Как проверить что биты 1 и 2 не равны 1 оба, биты 3 и 4 тоже не равны 1 оба .... N-1 и N бит не равны 1 оба?
То есть по парно получается проверить биты.
Ошибся формулировкой. Не логическое или, а побитовое.
Решение задачи: «Проверка двух соседних битов»
textual
Листинг программы
m = 101101; s = m>>1; // s = 010110 p = m&s; // p = 000100; r = p&010101;
Объяснение кода листинга программы
В данном коде происходит проверка двух соседних битов:
- Изначально значение переменной
mравно 101101. - Затем в переменную
sсдвигается значение переменнойmна один бит влево, то есть в данном случае значение переменнойsстановится равным 010110. - Далее, с помощью операции
И(AND) значение переменнойpравно 000100, то есть происходит сравнение каждого бита переменнойsс соответствующим битом переменнойm. Если биты совпадают, то их значение сохраняется в переменнойp. - В конце, значение переменной
rравно 010101, так как в данном случае нет необходимости использовать операциюИс переменнойp, так как значение переменнойpуже содержит требуемую информацию.