Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Алгоритм - как выделить число


uny ©   (2004-11-22 10:15:00) 

имеется 16 битное BCD число, в котором дата (4 цифры) = месяц и число месяца. как можно преобразовать данное число в виду = число месяца и месяц. т.е. поменять местами байты в BCD числе.

проблема в том, что сделать это нужно используя только умножение и сложение, и только один раз -
т.е. (данное число BCD)*(коэффициент постоянный)+(какое то число постоянное) = (нужное число BCD)
можно хотя бы по частям - отдельно получить месяц и отдельно число месяца


TUser   (2004-11-23 10:36:00) [1]


> но тогда "A=B+D" почему не "A=B*С+D"

Согласен, ошибся
C*(A*x+B)+D=A+B*x =>
B=A*C V A=B*С+D =>
A=A*C^2+D =>
D=A*(1-C^2)=A*(1-C)*(1+C)


> Ваше решение поддерживает вариант что коэффициенты забиваются
> один раз - просто как числа и действуют на все любые числа
> BCD?

Для каждого C можно найти D, такое, что преобразование, затребованное в [0] будет выполняться.

PS. По причине ламеризма своего, я, если честно, не в курсе, что такое числа BCD. Будет интересно узнать, с чем их едят.


uny   (2004-11-23 08:06:00) [2]

TUser ©   (22.11.04 16:07) [6]
честно говоря я не смог разобраться в выкладках -
вторая строчка это Вы приравниваете значения при "x"?
но тогда "A=B+D" почему не "A=B*С+D"

Ваше решение поддерживает вариант что коэффициенты забиваются один раз - просто как числа и действуют на все любые числа BCD?


TUser   (2004-11-22 16:07:00) [3]

Так?
C*(A*x+B)+D=A+B*x =>
B=A*C V A=B+D =>
A=A*C+D =>
D=A*(1-C)


MBo   (2004-11-22 16:07:00) [4]

>up
Ну и зачем этот ап без дополнительной информации?


uny   (2004-11-22 15:53:00) [5]

up


uny   (2004-11-22 11:18:00) [6]

[5] MBo ©   (22.11.04 10:57)
это панель, она отображает, больше ничего нет. сейчас "готовлю" для неё дату, хотелось поэкономить память контроллера и сделать силами панели


MBo   (2004-11-22 10:57:00) [7]

> умножить можно и прибавить
Использованием только этих операций,кажется, нельзя обойтись.
Битовые операции есть? (and,or, shl/r)

>(это не комп).
Уточни. возможно, есть операция обмена регистров?


uny   (2004-11-22 10:43:00) [8]

[1] MBo ©   (22.11.04 10:18)
нет. такой функции нет. есть только как описано - умножить можно и прибавить(это не комп). числа BCD разные, а коэффициенты определяются один раз...


MBo   (2004-11-22 10:18:00) [9]

функция Swap не уcтроит?


Наверх

Титульная страница Поиск, карта сайта Написать письмо