примерный алгоритм:
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
Длинная арифметика
Доброго времени суток, программисты и программистки. Я всего учусь, поэтому столкнулся с проблемой, не только на понитийном уровне, но и н уровне кода. Суть такова, есть число свыше 10 разрядов (представленно 1 мерным массивом), и мне нужно организовать что бы данной число, делилось, на такое же длинное. Могу конечно привести код на ассемблере(не мой естественно), если кто сможет переделать его для Си, желательно классы не использовать, Си же. Зарание спасибо.
Код:
длинные числа
там в исходниках найдешь перегруженные операторы(деление, умножение, сложение, вычитание).
там в исходниках найдешь перегруженные операторы(деление, умножение, сложение, вычитание).
всем спасибо