Финализация типа данных входного операнда и его фактических битов, используемых на встроенной платформе - PullRequest
0 голосов
/ 18 февраля 2020

Обычно, когда кто-то начинает переносить алгоритмы на какую-то встроенную платформу, он / она должен выяснить , сколько бит требуется для сохранения результатов и поиграть с битами и определить окончательный тип данных (8 бит / 16 бит / 32 бита). Это очень важно для встроенной платформы.

Теперь я сталкиваюсь с той же ситуацией. Но это моя первая попытка перенести мой алгоритм, но я не уверен, как начать с приведенного ниже уравнения:

NOTE: Here pixel values are from 0 to 255 values .

...
uint32_t  shift = 11;
uint16_t val = some_val;
uint8_t pos = ((uint8_t) (val>>(shift-7))) & 0x7f;      

float t=(float)pos/(1<<7);

float res = (-1*t)*pixel[0] + (8-7*t)*pixel[1] + (7*t+1)*pixel[2] + (t-1)*pixel[3]/8 ;

Итак, ниже приведены 4 операции в уравнениях выше:

(8-7*t)*pixel[1]
(7*t+1)*pixel[2]
(t-1)*pixel[3]/8
(-1*t)*pixel[0]

Я хочу понять, как я могу представить приведенное выше уравнение с плавающей запятой в формате с фиксированной запятой. Означает ли это, что кто-то может направить меня хотя бы для первой операции (8-7*t)*pixel[1] для ее рукописного формата с фиксированной запятой.

Ожидание:

, например: (8-7 * t) * pixel [1]

Здесь значения пикселей находятся в диапазоне от 0 до 255. Означает 8 bit input тип данных.

(8 - 7*t) =  (8 - 7 * 0.002) = (8 - 0.014 ) = 7.986 ..

, поэтому 7 можно представить в 3 битах и дополнительные биты.

Я хочу знать об этом.

Я знаю, что все заняты там работой, но если у кого-то есть мало времени для меня, чтобы научить / направить меня или предоставить мне Ссылка научиться писать рукописные речи с фиксированной точкой для такого уравнения будет отличной. Я знаю о формате с фиксированной запятой и с плавающей запятой. Но я хочу знать, как минимальные биты будут использоваться для представления уравнения в формате с фиксированной запятой.

...