реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Одним делением вычислить два, можно ли?
alexPec
сообщение May 26 2011, 19:20
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(ViKo @ May 26 2011, 10:46) *
Если k1 не очень большое число (а k2 должно быть еще меньше, естественно), то второе деление можно заменить поиском по таблице, общим размером k1:
[0, 1, 2... k2-1], [0, 1, 2... k2-1], [0, 1, 2... k2-1], ...0, 1, ... (на каком-то числе закончится)
Тогда сначала нужно поделить на k1 и найти остаток, а потом по таблице по этому остатку-индексу найти остаток от деления на k2.

Не, таблица не вариант, памяти в обрез sad.gif
Go to the top of the page
 
+Quote Post
Diusha
сообщение May 27 2011, 15:57
Сообщение #17


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(alexPec @ May 26 2011, 22:20) *
Не, таблица не вариант, памяти в обрез sad.gif

Так а чем умножение на константу вместо деления на константу не устраивает?
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 27 2011, 19:45
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Diusha @ May 27 2011, 18:57) *
Так а чем умножение на константу вместо деления на константу не устраивает?

Видимо, тем, что придется умножить на 1/k, затем из результата вычесть целую часть, оставить дробную, затем дробную умножить на k. Так получится остаток от деления на k. sm.gif
P.S. Возможно, смайлик я поставил зря.
Go to the top of the page
 
+Quote Post
Diusha
сообщение May 28 2011, 04:11
Сообщение #19


Вечный студент
****

Группа: Участник
Сообщений: 500
Регистрация: 11-09-06
Из: Питер
Пользователь №: 20 262



Цитата(ViKo @ May 27 2011, 22:45) *
Видимо, тем, что придется умножить на 1/k, затем из результата вычесть целую часть, оставить дробную, затем дробную умножить на k. Так получится остаток от деления на k.

Ну да, примерно так, но не совсем.
Умножить на (65536 div k) (целая константа), выкинуть (просто игнорировать) 2 мл. байта – и частное готово. Для получения остатка нужно еще одно умножение и одно вычитание. И соответственно вместо второго деления тоже 2 умножения и одно вычитание. Все в целых числах.
По-моему, этим должно не не_устраивать, а как раз устраивать sm.gif , ибо

Цитата(alexPec @ May 19 2011, 19:30) *
Нужна реализация с одним делителем + умножители и сумматоры/вычитатели если нужно.

Цитата(alexPec @ May 20 2011, 18:38) *
чтоб операция деления и (или) остатка от деления была одна, предпочтительнее вместо второй операции деления использовать несколько (может быть) умножений и сложений/вычитаний. Т.е вторая операция деления - это уже край.

Конечно, из слов автора буквоед может сделать вывод, что непременно должно быть одно и только одно деление, но мы же не такие wink.gif
Хотя и в этом случае – пожалуйста: одно деление «честное», а вместо второго – как я сказал

Сообщение отредактировал Diusha - May 28 2011, 04:18
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 28 2011, 07:16
Сообщение #20


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Diusha @ May 28 2011, 07:11) *
... но мы же не такие wink.gif

Мы не такие rolleyes.gif
Как не-буквоеды мы можем сказать - что-то нечисто в самой постановке задачи. Оно точно такое надо?
Go to the top of the page
 
+Quote Post
alexPec
сообщение May 28 2011, 09:16
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(ViKo @ May 28 2011, 11:16) *
Мы не такие rolleyes.gif
Как не-буквоеды мы можем сказать - что-то нечисто в самой постановке задачи. Оно точно такое надо?

Спасибо за ответы, попробую.
Да, и оно точно так надо.
Go to the top of the page
 
+Quote Post
i-mir
сообщение May 30 2011, 19:00
Сообщение #22


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 17-06-10
Из: Киев
Пользователь №: 57 986



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

Когда в свое время было мало ПЗУ и еще меньше ОЗУ на
борту 8-ми битного железа, то все делали на целочисленной
арифметике подогнанной под границы 2^n ... заменяли
все что можно сдвигами - и получали неплохие результаты.

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




Go to the top of the page
 
+Quote Post
singlskv
сообщение Jun 2 2011, 08:16
Сообщение #23


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ViKo @ May 27 2011, 23:45) *
Видимо, тем, что придется умножить на 1/k, затем из результата вычесть целую часть, оставить дробную, затем дробную умножить на k. Так получится остаток от деления на k. sm.gif
А если повезет с числами k1 и k2, то и этого не нужно будет sm.gif
ТС, так какие там у Вас числа k1 и k2 ?

Go to the top of the page
 
+Quote Post
alexPec
сообщение Jun 2 2011, 20:47
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(singlskv @ Jun 2 2011, 12:16) *
А если повезет с числами k1 и k2, то и этого не нужно будет sm.gif
ТС, так какие там у Вас числа k1 и k2 ?

k2 = {2,4,6}
k1 - 27 значений может принимать, ну вот некоторые: 4024, 4650, 4482, 3776, 2832.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Jun 2 2011, 21:55
Сообщение #25


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(alexPec @ Jun 3 2011, 00:47) *
k2 = {2,4,6}
k1 - 27 значений может принимать, ну вот некоторые: 4024, 4650, 4482, 3776, 2832.

ну тогда первое получение (а mod k1) таки честное деление
ну а деление на {2,4,6} с остатком это жеж совсем просто,
для 2 и 4 все совсем очевидно,
для 6 решается ну совсем простым домножением
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01462 секунд с 7
ELECTRONIX ©2004-2016