Суть Читай битовые паттерны, ASCII-байты, булево выражение и трассу полусумматора, затем предсказывай результат так, как учил юнит.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 14 min
Юнит был про извлечение смысла из битов. Здесь ты делаешь это напрямую: декодируешь двоичное число, декодируешь ASCII-байт, вычисляешь булево выражение по приоритету и трассируешь полусумматор. Реши каждое сам, прежде чем выбрать.
Цель
Потренируй ядро всего юнита — взять сырой паттерн или маленькую схему, применить правило (позиционное значение, кодировку, булев приоритет или таблицу истинности гейта) и считать правильный результат.
Сниппет 1 — прочитай двоичное число
bit: 1 0 1 1 0 1 0 0weight: 128 64 32 16 8 4 2 1
Викторина
Completed
Читая этот 8-битный паттерн по позиционному значению, какое это десятичное число?
Heads-up Позиция веса 1 — это самый правый бит, а не самый левый. Закрепи вес 1 справа и удваивай влево, затем сложи позиции с 1: 128 + 32 + 16 + 4 = 180.
Heads-up 11010100 — двоичное представление; вопрос про десятичное значение. Сумма весов 1-битов даёт 180.
Heads-up Число битов — это ширина, а не значение. Значение — позиционная сумма 1-битов: 128 + 32 + 16 + 4 = 180.
Декодированные как ASCII-текст, что складывают эти два байта — и чем были бы ТЕ ЖЕ два байта при простом числовом чтении?
Heads-up Байты не несут собственного смысла. Численно эти байты — 72 и 105; только кодировка ASCII превращает их в 'Hi'.
Heads-up В ASCII есть строчные: 'a'=97, 'i'=105. Байт 105 — строчная 'i', поэтому текст 'Hi', а не 'HI'.
Heads-up ASCII — 7-битный код, хранимый в 8-битных байтах со старшим битом 0. Оба байта в диапазоне 0–127, поэтому декодируются нормально: 'Hi'.
Сниппет 3 — вычисли булево выражение
expr = NOT A OR (B AND C)inputs: A = 1, B = 1, C = 0precedence: NOT first, then AND, then OR
Викторина
Completed
Вычисляя по указанному приоритету, каков результат?
Heads-up Приоритет — NOT, затем AND, затем OR, а не строго слева направо. AND в скобках связывает B и C первым: NOT A (=0) OR (B AND C = 0) = 0.
Heads-up NOT связывает сильнее всего и применяется только к A, давая NOT A = 0. Он не отрицает всё выражение. Результат — 0.
Heads-up Смешивать можно; приоритет это разрешает. NOT, затем AND, затем OR даёт одно значение: здесь 0.
Сниппет 4 — трассируй полусумматор
half-adder: sum = A XOR B (1 only when inputs differ) carry = A AND B (1 only when both are 1)inputs: A = 1, B = 1
Викторина
Completed
Какие сумму и перенос даёт полусумматор для A=1, B=1, и почему это совпадает со сложением битов?
Heads-up Бит суммы — это XOR, который равен 0, когда входы равны. 1 + 1 — двоичное 10: бит суммы 0, бит переноса 1, а не сумма 1.
Heads-up XOR равен 1 только когда входы РАЗЛИЧАЮТСЯ. Для двух единиц XOR равен 0. Значит sum = 0, а перенос (AND) равен 1.
Heads-up AND двух единиц равен 1, поэтому перенос равен 1, а не 0. Здесь нулём оказывается только XOR-сумма.
Итог
Каждый сниппет был миниатюрой читающего цикла юнита: двоичное число — позиционная сумма его 1-битов; ASCII-байт — это число, пока кодировка не назовёт его буквой; булево выражение раскрывается по правилу NOT-затем-AND-затем-OR; а XOR-сумма и AND-перенос полусумматора в точности воспроизводят сложение одного бита. Биты плюс правило дают смысл — это весь юнит в четырёх чтениях.