Происходит очень сложно. Кроме инженеров-разработчиков в этом вряд ли кто-либо будет разбираться.
Вот малая толика molod.mephi.ru/2002/Data/364.htm. Видно, что умножение выполняется за один такт. Столбиком этого не добиться - количество действий O(n*n) (n-разрядность числа) . Современные алгоритмы дают почти O(n), как у простого сложения.
То что мне попадалось на эту тему: быстрое преобразование Фурье, магические числа, внутренние таблицы некоторых значений (как при вычислении синуса) . Это я вроде у Кнутта видел.
Оно и понятно. От этого напрямую зависит быстродействие процессора. И естественно на это брошены существенные силы производителя. И поэтому реальное деление и умножение отстоит от "столбика" так же далеко как ядерная физика от арифметики.
Другие языки программирования и технологии
Как в микропроцессоре реализуются операции умножения и деления через сложение?
Вы будете смеяться, но он это делает "в столбик" :)
Совершенно верно, в столбик.
Таблица умножения для бинарных чисел - таблица 2x2, всё очень просто. Обнуляем буфер, умножаем следующий бит второго слагаемого на первое слашаемое по таблице, складываем с буфером, сдвигаемся на бит.
Вычитание реализуем через сложение с отрицательным числом.
Отрицательность реализуем по формуле x_negative = not(x) + 1. Через вычитание реализуем деление в столбик.
Таблица умножения для бинарных чисел - таблица 2x2, всё очень просто. Обнуляем буфер, умножаем следующий бит второго слагаемого на первое слашаемое по таблице, складываем с буфером, сдвигаемся на бит.
Вычитание реализуем через сложение с отрицательным числом.
Отрицательность реализуем по формуле x_negative = not(x) + 1. Через вычитание реализуем деление в столбик.
Ну умножение ещё понятно, 2*4 = 2+2+2+2 а вот деление. Я ваще не понимаю как заставить машину вычислять. Вот возьмем калькулятор. Как с помощью микросхем его заставили понять что такое +,-и как он вычисляет всё это. Ну с числами всё понятно, он переводит их в двоичные.
Похожие вопросы
- Особенности арифметических операций в C++, деление отрицательных чисел, вопрос ниже
- Здравствуйте! Объясните кто-нибудь, пожалуйста, как работают регистры сдвига и микропроцессоры сложения, умножения..
- С++ Арифметические действия над числами пронумерованы следующим образом : 1-сложение, 2-вычитание, 3-умножение, 4-дел...
- Как осуществить операцию сложения в с++ без операции присваивания ? int a=5; int b=6; int c=a+b; ( без "= ")
- Перегрузка сложения в С++
- подскажите алгоритм решения задачи: Действительное число а. Использовать только умножение. Получить а^64 за 6 операций.
- а вы учили таблицу умножения или понемали её?
- Опытные web-специалисты. Как реализуются современные сайты? Это в основном cms типа joomla? Если нет, то как?
- Ассемблер. При выполнении серии умножений происходит переполнение EAX.
- Деление отрицательного числа. Ассемблер