Шинное И (BusAND)

Входы (Inputs)

ПинТипОписание
Abus8Первая шина
Bbus8Вторая шина (маска)

Выходы (Outputs)

ПинТипОписание
Qbus8A & 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)
1111000000001111000000000
1011011000001111000001106
101010101111111110101010170
110011001111000011000000192

Применение

В АЛУ (уровень 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.