Другие языки программирования и технологии

Как в микропроцессоре реализуются операции умножения и деления через сложение?

Происходит очень сложно. Кроме инженеров-разработчиков в этом вряд ли кто-либо будет разбираться.
Вот малая толика molod.mephi.ru/2002/Data/364.htm. Видно, что умножение выполняется за один такт. Столбиком этого не добиться - количество действий O(n*n) (n-разрядность числа) . Современные алгоритмы дают почти O(n), как у простого сложения.
То что мне попадалось на эту тему: быстрое преобразование Фурье, магические числа, внутренние таблицы некоторых значений (как при вычислении синуса) . Это я вроде у Кнутта видел.
Оно и понятно. От этого напрямую зависит быстродействие процессора. И естественно на это брошены существенные силы производителя. И поэтому реальное деление и умножение отстоит от "столбика" так же далеко как ядерная физика от арифметики.
Дима Краев
Дима Краев
2 799
Лучший ответ
Вы будете смеяться, но он это делает "в столбик" :)
DL
Dj_ Leo
10 997
Совершенно верно, в столбик.
Таблица умножения для бинарных чисел - таблица 2x2, всё очень просто. Обнуляем буфер, умножаем следующий бит второго слагаемого на первое слашаемое по таблице, складываем с буфером, сдвигаемся на бит.
Вычитание реализуем через сложение с отрицательным числом.
Отрицательность реализуем по формуле x_negative = not(x) + 1. Через вычитание реализуем деление в столбик.
Ну умножение ещё понятно, 2*4 = 2+2+2+2 а вот деление. Я ваще не понимаю как заставить машину вычислять. Вот возьмем калькулятор. Как с помощью микросхем его заставили понять что такое +,-и как он вычисляет всё это. Ну с числами всё понятно, он переводит их в двоичные.
Odin Takoi_ No Ne Tvoi
Odin Takoi_ No Ne Tvoi
1 061

Похожие вопросы