В чем суть операторов << и >> - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте., нужна помощь. Имеется следующий код
if ((PINB&(1 << PB0)) == 0) // Если на выводе PB0 лог. 0
{
PORTB |= (1 << PB0); // Лог. 1 на выводе PB0
}
else
Не могу понять значение операторов << и >>. В документации к среде написано: операторы побитового сдвига (значение первого операнда сдвигается на количество бит указанных во втором операнде). Однако, если я правильно понял РВ0 это имя одного (первого) бита регистра. Опять же наличие числа перед оператором, для меня снова делает это выражение непонятным. Среда разработки CodeVision AVR 3.12. Я понимаю, что в самой среде могут использоваться иные/дополнительные операторы не оговоренные в стандарте языка, либо операторы могут иметь совсем иное значение. Однако не могу найти детальную и достоверную информацию по данным операторам (возможно я не там ищу). P.S. Если я правильно понял: PINB - регистр размером один байт, значение каждого бита означает состояние сигнала на входе порта (1- логическая единица, 0 - ноль) PORTB - регистр размером один байт, значение каждого бита означает состояние сигнала на выходе порта (что будет подано, 1- логическая единица, 0 - ноль). Заранее спасибо за помощь. Прошу прощения, если вопрос задан не в тему или не в той ветке.

Решение задачи: «В чем суть операторов << и >>»

textual
Листинг программы
if ((PINB & (1 << PB0)) == 0)

Объяснение кода листинга программы

  1. В данном коде используется оператор <<, который выполняет сдвиг данных вправо.
  2. В условии используется оператор & (логическое И), который сравнивает два значения.
  3. PINB - это регистр, который содержит информацию о состоянии портов ввода/вывода.
  4. 1 << PB0 - это выражение, которое сдвигает число 1 вправо на количество позиций, равное PB0.
  5. Результат этого выражения затем сравнивается с 0.
  6. Если результат равен 0, то выполняется блок кода внутри условия if.

Оцени полезность:

7   голосов , оценка 4.429 из 5
Похожие ответы