![]() |
|
|
![]()
|
|
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: нет Всего: 14 |
Всем доброго времени суток.
Народ, кто знает как реализовать побитово деление меньшего числа на большее? ОЧЕНЬ НАДО. -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
и что должно получиться в результате?
(т.е. в каком формате) -------------------- qqq |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Тупо ноль и меньшее в остатке.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| GIK |
|
||||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: нет Всего: 14 |
Я написал алгоритм деления больших чисел, нереально больших, до 1000 символов, правда там еще учесть кое что надо, вот он:
А мне нужно знать ка разделить например 2/7, и вывести хотябы 2 символа после запятой, люди помогите пожалуста еще 3 часа осталось :( Добавлено через 9 минут и 39 секунд
В любом, хоть что нибудь, все пойдет Это сообщение отредактировал(а) GIK - 28.12.2007, 11:30 -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
||||
|
|||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
ну необязательно же нацело я потом и спросил формат, что задание предполагает дробное число самое простое, что приходит в голову: числа с фиксированной запятой принцип такой: умножаем число на коэффициент и округляем - тогда его можно хранить, как обычное целое число (хотя, конечно, ещё нужно учесть, чтобы оно не оказалось слишком большим по модулю) ну а при обработке учитываем, что, на самом деле, это не само число, а умноженное выбор множителя зависит от нескольких условий: 1. нужно, чтобы умноженное число не вылезло из диапазона ячейки, в которой его собираются хранить, т.е. если у нас числа 0<=x<1 и хранить будем в байте, вполне подойдёт множитель 256 2. если известно, что числа будут не больше какого-то максимума, то множитель стоит брать наибольший из возможных, чтобы получить наилучшую точность 3. [это, скорее, специфично для данной задачи] простота: если уж хочется просто выводить число в 10-й системе, то можно взять множитель 10^n, соответственно, можно будет хранить n знаков после запятой и выводить их -------------------- qqq |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
2/7 = ((2 shl 8)/7) shr 8 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: нет Всего: 14 |
Чет не догоняю вообще ребят, ваши советы
Мне тут по пьяне пришла в голову вот такая мысль: По сути когда делим меньшее число на большее, это есть деление КАЖДОЙ ЕДЕНИЦЫ из меньшего числа умноженное на количество этих едениц, т.е. само число. Пример 7/26 это 1/26, 7 раз Я не могу хранить (или не умею) дроби, зато я могу хранить целы числа! А как мне это сделать? Оказывается очень просто- вместо 1-цы ставим 100 (в данном случае, т.к. делитель 26) в результате 100/26 = 3,84 (округляем) = 3. Теперь умножаем на 7 = 21. Проверим на калькуляторе 7/26 = 0,26 а у нас 21 - разница большая... Значит надо как то уменьшить погрешность. Разделтим теперь 10000 / 26 = 384,61 = 384 *7 = 2688 Сравниваем 7/26=0,2692, а у нас 2688. Видим что это вариант имеет меньшую погрешность. На данный момент это мне подходит т.к. для моей задачи мне достаточно знать 2 знака после запятой. Но конечно хотелось бы знать как считает калькулятор -------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
но ведь гораздо проще взять 700/26 и поставить запятую, где надо
-------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |