Замок, который узнаёт свой код

Перед семнадцатым уровнем игра предлагает короткое интерактивное вступление: кодовый замок из двух ламп и вентиля И открывается ровно на одном коде. Здесь — то же самое в тексте.

Опыт: дверь на одном коде

Две лампы задают код из двух цифр: лампа с весом 2 — левая цифра, лампа с весом 1 — правая. Лампа Door — это дверь. Переберите все четыре кода: 00, 01, 10, 11. Дверь откроется один раз — на коде 10. Провода и вентили при этом не менялись: менялись только лампы.

Прогноз: код 11

Обе лампы горят — код 11. Откроет ли он дверь? Нет. Внутри замка вентиль И проверяет каждый бит кода: на коде 10 у него оба входа равны единице, на любом другом коде хотя бы один вход — ноль. И выдаёт единицу только когда сходятся все проверки сразу. Половинного совпадения схема не замечает: лампа либо горит, либо нет.

Правило: схема узнаёт код цепочками И

Узнавание кода строится из вентилей И: каждый бит сравнивается со своей эталонной цифрой, а результаты сходятся в один вентиль И. Схема «узнаёт» тот код, который в неё зашит. Это и есть дешифратор — узел, который превращает число-код в один сигнал «это мой код». Операция для процессора — тоже число: код операции говорит, что делать, и дешифратор узнаёт его так же, как замок — свой код.

Где это используется

На семнадцатом уровне вы соберёте распознавание трёх команд: ADD, STA и JMP. На вход подаётся байт инструкции, цепочки вентилей И узнают старшие четыре бита — код операции, — и на выходе загорается линия нужного управляющего сигнала. Без дешифратора процессор не смог бы отличить «сложить» от «записать в память».

Пройти вступление в игре · Гайд уровня 17 · Все вступления