Шинное И (BusAND)
Входы (Inputs)
| Пин | Тип | Описание |
|---|---|---|
| A | bus8 | Первая шина |
| B | bus8 | Вторая шина (маска) |
Выходы (Outputs)
| Пин | Тип | Описание |
|---|---|---|
| Q | bus8 | A & B (побитовое И) |
Логика работы
Представь две шины как два ряда из восьми переключателей, выставленных друг напротив друга. BusAND сравнивает пары позиция за позицией: единица на выходе появляется только там, где и на шине A, и на шине B стоит единица. Хотя бы один ноль в паре — и на этой позиции результат обнуляется. Поэтому вторую шину обычно называют маской: она решает, какие биты пропустить, а какие перекрыть.
Главное свойство операции — маскирование. Там, где бит маски равен 1, бит из A проходит на выход без изменений; там, где 0, — обращается в ноль. Пример на байте: 10110110 AND 00001111 = 00000110 — маска 00001111 «вырезала» младшую тетраду, а старшие биты стёрла. Обратная ситуация: 11110000 AND 00001111 = 00000000 — маски не пересекаются, и результат пуст.
Тонкость: И никогда не создаёт новые единицы — их в результате не больше, чем в любом из входов. Отсюда два крайних случая: A AND 11111111 = A (маска-«прозрачное стекло») и A AND 00000000 = 0 (полное зануление). Второй случай инженеры используют сознательно — об этом ниже.
Примеры (8 бит)
| A (bin) | B (bin) | Q (bin) | Q (dec) |
|---|---|---|---|
| 11110000 | 00001111 | 00000000 | 0 |
| 10110110 | 00001111 | 00000110 | 6 |
| 10101010 | 11111111 | 10101010 | 170 |
| 11001100 | 11110000 | 11000000 | 192 |
Применение
В АЛУ (уровень 13) шинное И — одна из базовых операций наряду с ИЛИ, XOR и сложением. Процессор применяет его для очистки битов: перед записью нового значения нужные разряды сбрасывают маской, а затем вписывают новое. Пригодится И и при работе с флагами: наложив маску на байт состояния, можно проверить один конкретный флаг, не трогая остальные.
Вторая роль — разбор байтов команд и чтение устройств. В Harvard-архитектуре (уровень 16) команда упакована в один байт: старшие 4 бита — код операции, младшие — операнд. Наложив маску 00001111, процессор мгновенно извлекает операнд, не трогая опкод. Тот же приём читает кнопки геймпада и переключатели: маска оставляет только нужный бит. Наконец, в уровнях 22–29 BusAND работает предохранителем шины: подав 00000000 на вход маски, ты «отключаешь» источник данных от общей шины и предотвращаешь конфликт, когда два устройства тянут провод в разные стороны. Вместе с AddrDecoder так к шине подключается ровно одно устройство в каждый момент.
Смежные компоненты
Статьи по теме
Частые вопросы
Где применяется побитовое И?
Для маскирования: выделения нужных битов числа и проверки установленных флагов.
Что будет, если на вход B подать ноль?
Выход всегда будет 00000000, каким бы ни было A. Так «отключают» источник от общей шины: в уровнях 22–29 BusAND с нулевой маской не даёт двум устройствам конфликтовать за один провод.
Как выделить старшую тетраду байта?
Наложи маску 11110000: A AND 11110000 обнуляет младшие 4 бита и пропускает старшие без изменений. Например, 11011011 AND 11110000 = 11010000. Для младшей тетрады маска зеркальная — 00001111.