vvoid |
Отправлено: 18.11.2004, 17:45 |
|
Машинист паровоза
Группа: Участник
Сообщений: 171
|
Слушай, а где ты откапал алгоритм деления (тот который не "перебором"). А то по коду в него врубиться достаточно сложно, может у тебя есть его описание, а то я чегото не пойму места где встречается следующее:
|
|
vvoid |
Отправлено: 18.11.2004, 18:11 |
|
Машинист паровоза
Группа: Участник
Сообщений: 171
|
Давай ещё разберёмся с форматом хранения и получения данных.
Предположим у меня есть десятичное число А=1887, тогда:
digit[0] = 7
digit[1] = 8
digit[2] = 8
digit[3] = 1
(LittleEndian своеобразный)
Верно?
Тогда что у меня будет в Т после выполнения:
T.GetFrom(A,2,2).
Мой вариант ответа: Т = 18, т.е.:
T.digit[0] = 8
T.digit[1] = 1
Так?
P.S.* На конкретных примерах мне не трудно это отследить и отдебажить (я этого пока не делал ), а задаю я эти вопросы чтоб лучше понять где надо подправить код (в целях повышения ударостойкости класса)
Отредактировано vvoid — 18/11/2004, 19:32
|
|
Konstantine |
Отправлено: 19.11.2004, 10:43 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
Алгоритм деления — школьный в столбик, обобщённый для различных СИ (систем измерения) описания алгоритмов нету.... всё сам придумал
в делении том — сначала пытаюсь уменьшить разрядность (убрав первые нули)
Т — это "кусок" делимого, размером (кол-во цифр)=делителю+1 (увеличиваем т.к. при умножении делителя на число, может появиться новый разряд, но не более одного).
формат хранения данных — правильный, и это ИМХО оптимальный в данной ситуации... если базис больше 255, то нужно переделать под USHORT
GetFrom берёт с From цифры (с младшего разряда начиная с 0) Len цифр, т.е. с твоим числом GetFrom(1,2) будет 88, причём в любой СИ
|
|
|