Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Алгоритм - как выделить число   Найти похожие ветки 

 
uny ©   (2004-11-22 10:15) [0]

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

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


 
MBo ©   (2004-11-22 10:18) [1]

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


 
uny ©   (2004-11-22 10:43) [2]

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


 
MBo ©   (2004-11-22 10:57) [3]

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

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


 
uny ©   (2004-11-22 11:18) [4]

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


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

up


 
TUser ©   (2004-11-22 16:07) [6]

Так?
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) [7]

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


 
uny ©   (2004-11-23 08:06) [8]

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

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


 
TUser ©   (2004-11-23 10:36) [9]


> но тогда "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. Будет интересно узнать, с чем их едят.



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.053 c
1-1100889661
markers
2004-11-19 21:41
2004.12.05
Как вызвать процедуру находящуюся в переменной.


14-1100520774
jonik_dk
2004-11-15 15:12
2004.12.05
Программа не работает на чужом компьютере


1-1101277931
you
2004-11-24 09:32
2004.12.05
проблема с fastreport-ом


4-1098188002
sapsi
2004-10-19 16:13
2004.12.05
Переключение между приложениями


14-1099300270
ИМХО
2004-11-01 12:11
2004.12.05
500 Internal Server Error