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

Ваш аккаунт

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

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

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

Длинная арифметика

81K
24 мая 2012 года
Pitit
5 / / 24.05.2012
Доброго времени суток, программисты и программистки. Я всего учусь, поэтому столкнулся с проблемой, не только на понитийном уровне, но и н уровне кода. Суть такова, есть число свыше 10 разрядов (представленно 1 мерным массивом), и мне нужно организовать что бы данной число, делилось, на такое же длинное. Могу конечно привести код на ассемблере(не мой естественно), если кто сможет переделать его для Си, желательно классы не использовать, Си же. Зарание спасибо.
277
24 мая 2012 года
arrjj
1.7K / / 26.01.2011
Вычитание со сдвигом в цикле.
Код:
примерный алгоритм:
01234 / 00005
1) сдвигаем делитель влево, пока старшие разряды не будут на одном месте
01234 / 00005
01234 / 00050
01234 / 00500
01234 / 05000
2) собственно "деление" алгоритм такой:
в цикле вычитаем пока делимое > делителя и сдвигаем делитель на рязряд вправо, а резальтат на разряд влево.
01234 > 05000 - не вычитаем , сдвигаем. резальтат 0.
01234 > 00500 - вычитаем. результат - 1.
00734 > 00500 - вычитаем. резальтат - 2.
00234 > 00500 - не вычитаем. сдвигаем. резальтат 20.
00234 > 00050 - вычитаем. результат 21.
00184 > 00050 - вычитаем. результат 22.
00134 > 00050 - вычитаем. результат 23.
00084 > 00050 - вычитаем. результат 24.
00034 > 00050 - не вычитаем. сдвигаем. результат 240.
00034 > 00005 - вычитаем. результат 241.
00029 > 00005 - вычитаем. результат 242.
00024 > 00005 - вычитаем. результат 243.
00019 > 00005 - вычитаем. результат 244.
00014 > 00005 - вычитаем. результат 245.
00009 > 00005 - вычитаем. результат 246.
00004 > 00005 - не вычитаем. сдвигать уже некуда (делитель вернулся на исходную позицию)
результат: 246 остаток 4
Можешь реализовать сам, а можешь взять готовую библиотечку классов больших чисел: https://mattmccutchen.net/bigint/
445
26 мая 2012 года
Charley
176 / / 16.08.2011
длинные числа
там в исходниках найдешь перегруженные операторы(деление, умножение, сложение, вычитание).
81K
09 июня 2012 года
Pitit
5 / / 24.05.2012
всем спасибо

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог