Предлагаю обсудить очень интересную тему, про математические закономерности выведения операций через сумму.
Тема возникла на ровном месте, когда вспомнил, что изучая принцип работы ЦПУ микроконтроллера я понял, что все базовые математические операции можно выводить обычным суммированием и сдвигом регистра.
Как работает ЦПУ?
ЦПУ - это центральное процессорное устройство, в котором, как раз таки и производятся все операции над числами. Если проследить весь этап работы ЦПУ, то это будет выглядеть вот так:
- читается команда из памяти;
- транслируется из кода на C++ или другого языка в понятный для ЦПУ вид;
- читаются числа в составе оттранслированной команды, подставляя на входы АЛУ(Арифметико - Логическое Устройство);
- производит операцию суммирования и сдвига регистров;
- записывает результат обратно в память
Регистры представляют из себя простые 8 – битные хранилища или ячейки, которыми может управлять АЛУ, читая или записывая из них информацию.
В простых микроконтроллерах типа семейства AVR или PIC регистры могут быть 8 битными, а в современных процессорах ПК они могут быть 64 - битными.
Сумматор
Сумматор - это модуль в ЦПУ и часть АЛУ, который умеет совершать арифметические операции над значениями и сдвигать регистры, собственно из этого следует, что весь комплекс арифметических операции суммы, умножения, вычитания и деления являются составными операции суммы, нужно лишь сдвигать регистры.
На самом деле, арифметическими операциями на уровне двоичного кода занимается Буллевая алгебра.
Сумматор строится на логических элементах. Логические элементы - это базовые элементы, составленные на основе триггеров, в частности, триггер Шмидта, который имеет гистерезис. Т.е., при определенных входных порогах напряжения данный триггер может находиться состоянии 0 или 1, таким образом предоставляется возможным оперировать цифрами на физическом уровне.