Отправляет email-рассылки с помощью сервиса Sendsay

Операционная система Proolix

Задача

При разработке драйвера вечного двигателя для Пруликса возникла
следующая задача:

Есть два хитро-представленных числа с дробной частью, размером с байт, и
нужно их перемножить в микроконтроллере без аппаратного перемножителя за
минимальное время.

Числа выглядят так:

старшие четыре бита этого байта - это целая часть, младшие 4 бита-
дробная часть (количество 1/16-х).

0 = 0000 0000 (в двоичном представлении),
1 = 0001 0000,
2 = 0010 0000,
1.5 = 0001 1000 (то есть, 1.5+1.5=3, то есть 0011 0000).

Это же числа могут быть представлены в двухбайтном виде (старший байт -
целая часть, младший - дробная, то есть 1= 0000 0001, 0000 0000), не
важно. Важно то, что если 1 * 1, то это должно быть 1, а 2 * 2 = 4
соответственно, 1 * 1.5 = 1.5, 2 * 1.5 = 3 и т.п. Это коэффициенты
скорости, которые нужно перемножить. Что посоветуете? Тупо перемножать
два байта в таком представлении, а потом делить на 16 (сдвигать 4 раза),
или может есть более изящное решение?

Ответить   Thu, 26 May 2005 22:47:49 +0300 (#374327)