awesome-everything EN
↑ Обратно к восхождению

Базовый CS с нуля

Что такое компьютер: собери инструментарий от битов к арифметике

Суть Собери своими руками и в коде маленький инструментарий 'от битов к арифметике': конвертируй числа, декодируй кодировку и симулируй гейты до полусумматора.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 210 min

Ты прочитал, как биты становятся числами, буквами, истинностными значениями и арифметикой. Теперь построй всю лестницу сам — маленькую, сначала руками, потом в коде — чтобы цепь от двухсостоянийного переключателя до работающего сумматора стала тем, что ты собрал, а не просто посмотрел.

Цель

Преврати ментальную модель юнита в работающий инструментарий: конвертируй между двоичной и десятичной, декодируй байт более чем одной кодировкой и симулируй булевы гейты достаточно, чтобы сложить два бита полусумматором, собранным из AND, OR и NOT.

Проект
0 из 6
Цель

Собери небольшой инструментарий командной строки (на любом языке), который берёт сырые биты и проводит их вверх по лестнице юнита — число, затем закодированный символ, затем полусумматор на уровне гейтов — доказывая на каждой ступени, что ты можешь получить результат руками и подтвердить его в коде.

Требования
Критерии приёмки
  • binary-to-decimal и decimal-to-binary дают корректный круговой обход на каждом тестовом значении (например 0, 13, 90, 180, 255), показанный парами до/после.
  • Декодер байта выводит, например, 65 и как число 65, и как символ 'A', а строка-примечание утверждает, что смысл пришёл из выбранной кодировки, а не из битов.
  • Все три таблицы истинности гейтов, а также таблицы XOR и полусумматора выводятся корректно и в точности совпадают с таблицами из уроков юнита.
  • Полусумматор даёт sum 0 / carry 1 для входов 1 и 1, и лист ручной проверки показывает тот же результат, выведенный на бумаге.
Senior-стретч
  • Расширь декодер байта до третьего чтения: трактуй три подряд идущих байта как RGB-пиксель и выведи тройку (R, G, B), отметив, что это те же биты при ещё одной кодировке.
  • Соедини два полусумматора и гейт OR в полный сумматор, затем сцепи четыре полных сумматора, чтобы сложить два 4-битных числа; проверь несколько сумм против десятичной арифметики.
  • Перестрой not_gate, and_gate и or_gate, используя только один примитив nand(a, b), демонстрируя, что один NAND функционально полон.
  • Добавь крошечный тестовый каркас, который автоматически проверяет каждую таблицу истинности и каждый круговой обход, чтобы весь инструментарий проходил или падал за один запуск.
Итог

Сборка этого инструментария делает юнит конкретным: ты конвертировал биты в числа по позиционному значению и обратно делением пополам, увидел, как один байт значит число и букву при разных кодировках, и собрал AND, OR, NOT в XOR, а затем в полусумматор, который корректно складывает два бита. Это вся дуга — двухсостоянийные переключатели, через кодировки и булеву логику, вверх к арифметике — собранная твоими руками.

Продолжить восхождение ↑Адресуемые ячейки
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.