Шинное ИЛИ (BusOR)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| A | bus8 | Первая шина |
| B | bus8 | Вторая шина |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Q | bus8 | A | B (побитовое ИЛИ) |
Логика работы
BusOR тоже сравнивает две шины позиция за позицией, но правило другое: единица на выходе появляется там, где есть хотя бы одна единица — на шине A, на шине B или на обеих сразу. Ноль получается только в одной комбинации: 0 OR 0 = 0. Похожая картина из жизни — два выключателя, подключённых параллельно к одной лампе: замкни любой, и свет уже горит.
Главное свойство — установка битов. Там, где бит маски равен 0, значение из A проходит на выход без изменений; там, где 1, — принудительно становится единицей. Пример на байте: 10000000 OR 00001111 = 10001111 — маска включила четыре младших бита, не тронув остальные. А склейка тетрад выглядит так: 11110000 OR 00001111 = 11111111 — две половинки слились в целый байт без единого конфликта.
Тонкость: ИЛИ не умеет стирать — единицу нельзя убрать, добавив что-то на второй вход. A OR 11111111 всегда даёт 255: байт заливается единицами целиком. Поэтому пары «установить бит» и «сбросить бит» в процессорах разделены: первое делает ИЛИ с маской, а второе — И с инверсной маской.
Примеры (8 бит)
| A (bin) | B (bin) | Q (bin) | Q (dec) |
|---|---|---|---|
| 11110000 | 00001111 | 11111111 | 255 |
| 10000000 | 00001111 | 10001111 | 143 |
| 10101010 | 00000000 | 10101010 | 170 |
| 00001111 | 00001111 | 00001111 | 15 |
Применение
В АЛУ (уровень 13) шинное ИЛИ стоит в одном ряду с И, XOR и сложением — это базовый набор операций над байтами. В процессоре ИЛИ отвечает за установку флагов и статусов: подложил маску с единицей в нужной позиции — и бит состояния включён, остальные не тронуты. Так формируются байты признаков «перенос», «ноль», «переполнение».
Главная проектная роль — сборка байта из частей. В Harvard-архитектуре (уровень 16) команда — это опкод в старшей тетраде и операнд в младшей. Сдвинув опкод влево на 4 позиции через BusSHL, процессор склеивает половинки одним ИЛИ: (опкод << 4) OR операнд — готовый байт для записи в память команд. Тем же способом собираются координаты пикселя на MatrixDisplay и объединяются биты состояния нескольких устройств в один общий байт.
Смежные компоненты
Статьи по теме
Частые вопросы
Где применяется побитовое ИЛИ?
Для установки битов числа и объединения флагов: достаточно одного единичного бита.
Как установить один бит в единицу, не трогая остальные?
Наложи маску с единицей только в нужной позиции: 10101010 OR 00000100 = 10101110 — бит 2 включён, остальные биты без изменений.
Чем ИЛИ отличается от исключающего ИЛИ?
ИЛИ ставит бит в единицу и оставляет её: 1 OR 1 = 1. XOR работает как переключатель: 1 XOR 1 = 0, повторное применение той же маски возвращает всё как было.