C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

стр.: (2) < 1 [2] >
Системы исчисления, Перевод из любой системы в любую!!!
vvoid
Отправлено: 18.11.2004, 17:45


Машинист паровоза

Группа: Участник
Сообщений: 171



Слушай, а где ты откапал алгоритм деления (тот который не "перебором"). А то по коду в него врубиться достаточно сложно, может у тебя есть его описание, а то я чегото не пойму места где встречается следующее:
CODE
A.size-T.size
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.* На конкретных примерах мне не трудно это отследить и отдебажить (я этого пока не делал cool.gif ), а задаю я эти вопросы чтоб лучше понять где надо подправить код (в целях повышения ударостойкости класса)

Отредактировано vvoid — 18/11/2004, 19:32
Konstantine
Отправлено: 19.11.2004, 10:43


Мастер участка

Группа: Модератор
Сообщений: 545



Алгоритм деления — школьный в столбик, обобщённый для различных СИ (систем измерения) описания алгоритмов нету.... всё сам придумал

в делении том — сначала пытаюсь уменьшить разрядность (убрав первые нули)

Т — это "кусок" делимого, размером (кол-во цифр)=делителю+1 (увеличиваем т.к. при умножении делителя на число, может появиться новый разряд, но не более одного).

формат хранения данных — правильный, и это ИМХО оптимальный в данной ситуации... если базис больше 255, то нужно переделать под USHORT

GetFrom берёт с From цифры (с младшего разряда начиная с 0) Len цифр, т.е. с твоим числом GetFrom(1,2) будет 88, причём в любой СИ
стр.: (2) < 1 [2] >
Вернуться в Вопросы программирования в C++Builder