Собственно, начнем с базы, транзистор это кусок песка, меди и щепотки других веществ, его задача пускать и не пускать ток
У транзистора есть 3 металлические ножки:
Коллектор (ножка, куда входит ток от питания)
База (ножка, которая управляет: открывает или закрывает путь току)
Эмиттер (ножка, откуда ток выходит)
Есть 2 типа транзисторов:
PNP: Есть ток на Базе? Если да, то: транзистор закрылся, ток не идёт
NPN: Есть ток на Базе? Если да, то: транзистор открылся, ток идёт
вот так выглядят транзисторы на схеме и в реальной жизни
Если мы будем соединять транзисторы определенным способом мы можем получать разные логические вентили(gate) и уже из них можно собирать сложные схемы, а в итоге даже твой компуктер
AND: Если соединить два транзистора последовательно, то у нас есть конструкция с 2 входами (в вентилях считается только базы транзисторов) и чтобы на выходе был 1 (ток есть) нужно подать на оба входа 1. В таблице 0 возле провода означает, что ток по нему не идёт, 1, что идёт. А в колонке OUT мы видим будет ли выходить ток
А вот так выглядит сам AND вентиль
OR: Если же подключить их параллельно. То току будет все равно открыт 1 или 2 транзистора, поэтому на выходе будет ток, если хотя бы на 1 базу транзисторов подается ток
Вот обозначение самого вентиля в схемотехнике
В реальной жизни все сложнее из-за того, что есть напряжение, поэтому чаще всего используют NAND (Not AND), это основной логический вентиль так как без него в схемотехнике тяжко.
Менее страшна версия c абстракцией, без всяких резисторов (Nand gate выглядит как AND но с точечкой на выходе, которая означает NOT)
Но для простого калькулятора нам нужен XOR(Exclusive OR)
Он имеет 2 входа, и будет выводить ток в случае если A != B
Почему это важно и нужно?
В двоичной математике 1+1 = 10
И нам нужно, чтобы в разряде при сложении двух единиц оставался 0. И XOR дает этот ноль, когда на входах две единицы.
Совместив XOR и AND, мы можем создать Half adder
Эта схема имеет 2 входа(А и B) и 2 выхода Sum(результат разряда) и так же Carry-out(перенос, та самая единица при 1+1=10).
Но Half-adder подразумевает, что существует настоящий, полноценный, adder, у которого уже 3 входа A,B, а также вход переноса (Carry-in)
Carry-in нужен, чтобы принимать сигнал от Carry-out предыдущего разряда. Так мы можем собрать 4, 8, 16-битный сумматор, просто соединяя их паровозиком.
вот собственно как он выглядит
Делать A+B без споров вещь полезная, но хотелось бы побольше
Ок мы научились суммировать, а как вычитать то?
Хорошая новость в том, что нам не нужно делать отдельную вычиталку. Мы можем использовать уже готовый сумматор, если прикрутим к нему костыль!
Нам нужен вентиль NOT:
Используя его, мы инвертируем все биты числа B (0 становится 1, а 1 теперь 0)
Вот тут мы и используем костыльную магию! Мы подаем 1 на вход Carry-in самого первого full adder
Нам жизненно необходим этот костыль с 1, так как инверсия битов через NOT дает кривой код с двумя нулями 0000 и 1111.
Так как у нас есть два нуля, мы добавляем 1 и в итоге любая операция которая будет выдавать 0 в бинарном коде будет выглядеть так 10000 и если мы рассматриваем 4 битный сумматор то вывод будет 0000, лишняя единица вылетает
Ну и если прикрутить еще 100 млрд транзисторов, то выйдет компуктер. Это и есть схемотехника
Если вы никогда не интересовались этой темой и вам стало немного интересно, то могу порекомендовать посмотреть видосы от https://www.youtube.com/@BenEater, например по теме этой теме у него хороший видос
Мне очень зашел Turing Complete так как там можно не только создавать схемы но и полноценно на них кодить и писать на своем ассемблере и игра выглядит красивее чем https://nandgame.com/