Текущий архив: 2006.10.15;
Скачать: CL | DM;
ВнизРабота с большими числами Найти похожие ветки
← →
kroner (2006-09-21 14:30) [0]Подскажите где можно почитать по теме. Желательно алгоритм на asm"e
← →
wal © (2006-09-21 14:33) [1]Почитать - в учебнике второго класса - вычисления "в столбик".
На Asm перевести самостоятельно.
← →
kroner (2006-09-21 14:36) [2]асм пока плохо знаю. А есть готовые библиотеки?
← →
Rial © (2006-09-21 14:43) [3]http://Rial578.narod.ru/source/bigzahlen.rar
Кривой, медленный, некрасивый... но рабочий вариант
для сложения, умножения, деления и вычитания
чисел любой разрядности.
← →
ArtemESC © (2006-09-21 18:43) [4]kroner (21.09.06 14:30)
Могу рассказать как складывать и вычитать большие числа на асме...
← →
ZMRaven © (2006-09-21 18:48) [5]Ну так поведай, я то асму не знаю толком...мне было бы интересно :-)
я там хорошо знаю только int 33h
← →
xayam © (2006-09-21 18:52) [6]
> ArtemESC © (21.09.06 18:43) [4]
да да рассказывай тоже интересно. А умножать умеешь? А если числа с миллионами разрядов то как?
← →
ArtemESC © (2006-09-21 19:04) [7]ZMRaven © (21.09.06 18:48) [5]
Не проверял - пишу, что придет в голову, могу ошибиться:
ES: [EDI] - указывает на число к котором прибавлять...
DS: [ESI] - указывает на слагаемое
CX = количество выделенных под число байтов, умноженное на 4...
Сложение:
pushad
clc
@@L:
mov EAX, ES: [EDI]
adc EAX, DS: [ESI]
mov ES: [EDI], EAX
add EDI, 4
add ESI, 4
loop L
popad
ES: [EDI] - указывает на число, из которого нужно вычесть...
DS: [ESI] - указывает на вычитаемое...
CX = количество выделенных под число байтов, разделенное на 4...
Вычитание:
pushad
clc
@@L:
mov EAX, ES: [EDI]
sbb EAX, DS: [ESI]
mov ES: [EDI], EAX
add EDI, 4
add ESI, 4
loop L
popad
← →
ArtemESC © (2006-09-21 19:08) [8]Надеюсь имелись ввиду операции с целыми числами !??
xayam © (21.09.06 18:52) [6]
А умножать умеешь?
В школе научился...
А если числа с миллионами разрядов то как?
А зачем???
← →
xayam © (2006-09-21 19:10) [9]
> ArtemESC © (21.09.06 19:08) [8]
ну вот есть же проекты поиска чисел Мерсенна. Как это работает?
← →
ArtemESC © (2006-09-21 19:14) [10]xayam © (21.09.06 19:10) [9]
Какие числа Марсена??
← →
xayam © (2006-09-21 19:16) [11]это которые простые и удовлетворяют формуле 2^p-1, где p - тоже простое число
← →
ArtemESC © (2006-09-21 19:20) [12]xayam © (21.09.06 19:16) [11]
Не понял в чем состоит трудность, нужно проверить является ли данное длинное = 2^p-1, где p - тоже простое число??
← →
ArtemESC © (2006-09-21 19:25) [13]2^p - это одна единичка и все нули
00000100000.......0
2^p - 1 это
00000011111.......1
Нужно просто посчитать количество единичек в начале, если количество - простое число, то ок...
Число единичек должно поместиться в 4 байта, ибо если их будет больше у персонального компьютера закончиться память...
← →
xayam © (2006-09-21 19:25) [14]
> ArtemESC © (21.09.06 19:20) [12]
трудность в том что формулы для вычисления простых чисел нет. Приходится проверять каждое число. И числа Мерсенна также проверяют на простоту (кстати последнее 44-е число Мерсенна содержит аж 9,808,358 разрядов) что понятно трудно.
← →
xayam © (2006-09-21 19:29) [15]
> ArtemESC © (21.09.06 19:25) [13]
> 2^p - это одна единичка и все нули
> 00000100000.......0
>
> 2^p - 1 это
> 00000011111.......1
>
> Нужно просто посчитать количество единичек в начале, если
> количество - простое число, то ок...
да ладно?
> ибо если их будет больше у персонального компьютера закончиться
> память...
регистровая может и закончится, а если как BCD хранить в файле и по частям считывать.
Страницы: 1 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.045 c