Цитата
Или может кто не поленится и напишет примерчик как умножать числа в формате 2.14 в яре с
о дела... а аппноту стандартную, таки никак? Ниасилил?
Код
;r19...r16 = r23:r22 * r21:r20
clr r2
muls r23, r21 ; (signed)ah * (signed)bh
movw r18, r0
mul r22, r20 ; al * bl
movw r16,r0
mulsu r23, r20 ; (signed)ah * bl
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
mulsu r21, r22 ; (signed)bh * al
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
это обычное знаковое умножение 16х16=32. Достаточно просто переделывается для произвольного кол-ва байт. Если у тебя операнды имеюцца в виду как s_d1.q1 и s_d2.q2, то результат умножения будет s_(d1+d2).(q1+q2)
где s, q1,q2 и d1,d2 - знак, кол-во бит после запятой и до запятой, соотвецтвенно. "." - запятая
В Ц это реализуется аналогично. Числа объявляются как целые знаковые нужного размера, только ты вручную манипулируешь фиксированной точкой, т.е помнишь, где она располагается после умножения. Фсё.
Что касаецца плывучки, то военного в ней ничего нет. Умножение, практицки то-же самое по времени, тока чуть длиннее, на копеечку. Арифметика - гораздо длиннее за счёт денормализации-нормализации. Ну и проверки разные на стандартные ситуаццыи.