[P&AM Lab] Библиотека больших чисел

Grigoriy A. Sitkarev sitkarev на komitex.ru
Пн Фев 28 19:35:48 MSK 2011


Боря, вот такие соображения.

В функции bnum_set() устанавливается значение поля top на индекс 
последнего разряда, переданного в параметрах пользователем. По 
соглашению, пользователь обязан передавать туда валидное значение, т.е. 
без ведущих нулей.

Порядок разрядов в массиве соответствует степеням основания, что в общем 
соответствует логике нашей библиотеки. Т.е. если мы хотим засунуть туда 
положим число 0xabcd0102 то мы располагаем массив так:

unsigned short digits[] = { 0x0102, 0xabcd };

Если очень хочется сделать функцию с проверкой на валидность, тогда 
нужно делать функцию bnum_set_safe() которая проверяет указатель на 
массив, убирает ведущие нули и если что-то пошло не так, то 
устанавливает значение bignum в 0.

Или я что-то не понимаю?

--
Г.А.

28.02.2011 10:26, LonelyRuyK пишет:
> Спасибо, почитаю. А вот ещё уточнение по init.с: если оставить так как было то
> функция cmp будет неправильные результаты выводить( изза того что сначала в
> ней проверяется a->top а уже потом сами значения). Стоит ли тогда переписывать
> эту функцию?




Подробная информация о списке рассылки Lab