Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Деление через умножение на обратное число

15K
13 мая 2007 года
nevi
35 / / 13.05.2007
Народ, подскажите как можно делить двоичные целые числа методом умножения на обратное число!?
Буду очень признателен.
15K
15 мая 2007 года
Iceman
19 / / 20.04.2006
Цитата: nevi
Народ, подскажите как можно делить двоичные целые числа методом умножения на обратное число!?
Буду очень признателен.



Если тебя интересует сам алгоритм, то смысл его сводится к следующему: операцию деления Z/D можно заменить на умножение Z*(1/D). Весь вопрос в том, как определить 1/D. Для этого используются два метода - разложение в ряд Тейлора и метод Ньютона-Рафсона.
Первый: D=1+X, тогда 1/D = (1-X)*(1+X^2)*(1+X^4)*(1+X^8)*(1+X^16)*...
Второй сводится к решению уравнения f(X) = 1/X - D = 0, т.е. X = 1/D, которое может быть найдено с помощью реккурентного соотношения
X(i+1) = X(i)*(2-X(i)D).

15K
16 мая 2007 года
nevi
35 / / 13.05.2007
Цитата: Iceman
Если тебя интересует сам алгоритм, то смысл его сводится к следующему: операцию деления Z/D можно заменить на умножение Z*(1/D). Весь вопрос в том, как определить 1/D. Для этого используются два метода - разложение в ряд Тейлора и метод Ньютона-Рафсона.
Первый: D=1+X, тогда 1/D = (1-X)*(1+X^2)*(1+X^4)*(1+X^8)*(1+X^16)*...
Второй сводится к решению уравнения f(X) = 1/X - D = 0, т.е. X = 1/D, которое может быть найдено с помощью реккурентного соотношения
X(i+1) = X(i)*(2-X(i)D).



все проще мне нужно просто разделить двоичную "1" на делитель, и потом сдвинуть дробную часть - в сектор целой, и полученное двоичное целое умножить на делимое ))

15K
16 мая 2007 года
Iceman
19 / / 20.04.2006
Цитата: nevi
все проще мне нужно просто разделить двоичную "1" на делитель, и потом сдвинуть дробную часть - в сектор целой, и полученное двоичное целое умножить на делимое ))



Так действительно проще. Только как ты будешь делить 1 на делимое?

15K
18 мая 2007 года
nevi
35 / / 13.05.2007
Цитата: Iceman
Так действительно проще. Только как ты будешь делить 1 на делимое?



так - как еслибы это было число с плавающей точкой: например 1/2 будет выглядеть 0000.1000 - теперь сдвину дробную часть в область целой, и умножу делимое на 1000 ))

15K
19 мая 2007 года
Iceman
19 / / 20.04.2006
Цитата: nevi
так - как еслибы это было число с плавающей точкой: например 1/2 будет выглядеть 0000.1000 - теперь сдвину дробную часть в область целой, и умножу делимое на 1000 ))



Если тебя это устраивает, то замечательно... Просто это совсем не замена деления умножением.

15K
19 мая 2007 года
nevi
35 / / 13.05.2007
почему? умножаем на обратное число, просто сдвинутое. чтоже это тогда?
15K
19 мая 2007 года
Iceman
19 / / 20.04.2006
А как ты собираешься находить обратные числа? Например, 1/23?
15K
20 мая 2007 года
nevi
35 / / 13.05.2007
как обычно - двоичным делением. если тебя смущает целочисленность, то уменя в задаче - все обратные числа сохраняются заранее и извлекаются из таблицы
15K
20 мая 2007 года
Iceman
19 / / 20.04.2006
Цитата: nevi
как обычно - двоичным делением. если тебя смущает целочисленность, то уменя в задаче - все обратные числа сохраняются заранее и извлекаются из таблицы



Меня ничего не смущает - это твоя задача, и тебе реализовывать ее так, как тебе удобнее. Только я повторюсь - тот метод, что ты предложил, не есть метод замены деления умножением, потому что такой метод замены предполагает НЕ использование операции деления вообще, а у ты собираешься использовать "обычное двоичное деление". Т.е. ты просто заменяешь одну операцию деления - двумя, одна из которых тоже деление. Может, с сумме они и дадут выигрыш по времени/производительности, ни это уже зависит от реализации.

15K
20 мая 2007 года
nevi
35 / / 13.05.2007
фишка реализации в том, что обратные числа уже постчитаны и просто достаются из таблицы при умножении:)
100K
13 декабря 2018 года
evyjitybt
1 / / 13.12.2018
Есть метод деления любого числа на любое умножением на определённое для каждого делителя число. Этот метод я обнаружил в 80-х годах и только 10 лет назад его обнародовал. Он называется **"Вместо деления умножение"** Найдите в интернете мою статью под этим названием, которую я представил на международной конференции в 2006 году как открытие. Я пишу книгу на эту тему, материал потрясающий. Книга будет по плану состоять из 11 глав. На подступах к этому открытию я в в 1989 г написал статью *"удивительные приключения десятичных дробей"* ("Квант", 1989 № 8, с.23-30). В 100 школах Москвы в 1985-1990-х годах я читал лекции на эту тему для старшеклассников. См. также мою статью "А фокусы ли это" в журнале "Математика в школе", 1989 № 5, с.110-113. Ещё в древних индийских ведах 4000 лет назад кое-что об этом методе знали. Тот, кто найдёт меня, позвоните мне. я познакомлю его с книгой американца, который был рядом с этим открытием, но не увидел его.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог