Подскажите маленькую глупость:

Знаю как комп (калькулятор) складывает, как вычитает и как умножает (много раз складывает), знаю как высчитывает триго функции через ряд, и как работает с запятыми.

Но как он делит?

Там результат получается численными методами путем перебора чтоли?

Пытаюсь вспомнить архитектуру ЭВМ — вроде бы на мат операции у CPU есть ограниченное число тактов. Как же он успевает?

GD Star Rating
loading...

20 Responses to Как делит калькулятор?

  1. AmCrazy:

    умножает на обратное

  2. DnMath:

    Полагаю, деление реализуется через вычитание и умножение.

  3. Nohtyp:

    а как он обратное получает? и как вписывается в ограниченные рамки тактов?

    Ну и вообще делит он в столбик.
    так всё равно же делит.

  4. Nohtyp:

    вики для меня сложно 🙁 я понимаю что есть разные методы, мне бы на пальцах объяснить как и чего он делает в каждом из них.

    Я даже больше скажу — Полагаю, деление реализуется через сложение.

  5. TrBotanik:

    Ну, там всё довольно просто. Числитель и знаменатель последовательно умножаются на некоторый множитель так, чтобы знаменатель сошёлся к 1. Тогда результат умножений числителя сойдётся к результату деления.

  6. Nohtyp:

    ну это вроде бы и называется численные методы 🙂 но в чисноках есть оценочный уровень итерация, например n2 или как там это называет? — степень сходимости… я уже забыл всё.

    Так вот как ЦПУ гарантирует что он подсчитает все за выделенные ему такты? или там тупо берется тип числа, высчитается предельная точность и дальше уже говорится что хватит 15 тактов… или вообще никто ничего не обещает и обработчик ждет пока ему не покажут флаг что всё подсчитано и результат в таком то регистре ЦПУ?…

    Там же в камне ещё есть SIMD, может он по хитрому распаралеливает вычисления?

    Вот тот же sin(*) через ряд считать, это деление в каждом члене, а ряд то бесконечный.. гдето стоит отсечка по точности.

    Хочется вспомнить забытое, раз у вас такая дружная математическая блог (а не хамская авто блог)

  7. DRusba:

    Насколько я понимаю, умножение и деление можно реализовать чисто аппаратно с помощью примитивных логических элементов — подаешь на 32 или 64 сигнальные линии число в двоичном представлении и на выходе снимаешь результат. К учебнике классических алгоритмов аппаратной реализации математики с помошью логических элементов AND, OR и NOT выделен целый раздел.

  8. Nohtyp:

    думаю это верно для сложения (и вычитания, как инвертное сложение), там так и сделано и делается это за конечное и фиксированное число тактов.

    Умножение — по тупому это сложение сколько надо раз… или же тут говорили о операции смещения битов >> и вот как там это сделано я совсем не помню :(( и количество тактов должно зависит лишь от сложности цифры (не крупноты цифр! а именно сложности)

    Деление ещё сложнее… есть линк на английскую вики, мне сложно читать математику в английском… но там есть подсказка про матрицу «преобразования», то есть процессор сводит все задачи к более простым, на которые у него уже есть ответы записанные в нем же!… в вики есть инфо о ошибках на Intel камнях.

    Вот кто бы поумнее показал нам выдержку из учебника где описан раздел про мат операции с двоичной логикой, на разных камнях по разному может рассчитывать.

    ps алгоритмы это вообще интересная штука… одно и тоже можно сделать разными путями, на все операци есть выделенные «такты», так вот для разных условий оператор ЭВМ должен был писать свой двоичный код (это даже не ассемблер, это именно двоичный код x86 процессор), чтобы оптимизировть нагрузку… это сейчас за сто баксов имеем 3гц на 2 ядра ололо.

  9. DRusba:

    В нетленке «Алгоритмы: Построение и Анализ» Кормана, Лейзерсона и Ривеста в секции 29.3 дана логическая схема аппаратного умножителя. По четыре сингальные линии на каждый из множителей, восемь сигнальных линий с результатом.

  10. TrBotanik:

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

  11. Nohtyp:

    применяется разложение на НОДы чтобы проще ему было ворочить цифры?… то есть если железке дать самые большие неделимые цифры — то она очень сильно задумается?.. или тупо их переделает в 2n+1, что как то ей позволит разделить нагрузку под simd?

    Да, там ещё блок плавающей точки должен степени помнить… ух наваротили за 60 то лет умных машин, как раз и Т4 вышел на экраны:))

    Однако вопрос сложнее чем я думал. Может удалим нафиг топик? Толку всё равно никакого для реальной жизни.

  12. K82:

    Столбиком

  13. Ratosk:

    чукча писатель?

  14. Raebodep:

    > Знаю как комп (калькулятор) складывает, как вычитает и как умножает (много раз складывает)

    глупости

    кстати, «комп» и калькулятор считают по–разному: калькулятор использует специальный промежуточный код.

  15. LeBig:

    с помощью элементов 2–ИЛИ–НЕ (или 2–И–НЕ) можно синтезировать любую функцию. Это математически доказано. Даже имена у этих 2х кирпичиков есть: стрелка Пирса и штрих Шефера.

  16. Tnamo:

    на птца учили и даже заставляли делить
    что–то типа этого реферата — //www.ref.by/refs/67/28375/1.html

  17. SpMonkey:

    Э… тебя интерисует деление в целом? или каких–то конкретных чисел? Вроде бы ежели сдвинуть вправо на 1 бит двоичное представление числа, получим результат деления на 2 🙂 Это самое элементарное, тебя интерисует что–то выше? 🙂
    К слову, если сдвинуть влево, получим результат умножения на 2, это к слову об умножении путём сложения 🙂

  18. SpMonkey:

    Для длинной арифметики существуют отдельные алгоритмы, по крайней мере для умножения )
    см. Метод Карацубы (как раз с помощью которого опровергли гипотезу Колмогорова n2)
    метод Шёнхаге–Штрассена
    просто Штрассена (матричный)
    и метод Трахтенберга

  19. rDummy:

    А вот если честно, вопрос возник после прочтения поста Кафки про фракталы?)

  20. 1Moon:

    сдвигом он делит. и умножает тоже.

Добавить комментарий