Мне нужно преобразовать 8-битное число (0 - 255 или # 0 - #FF) в его 12-битный эквивалент (0 - 4095 или # 0 - #FFF)Преобразование 8 бит в масштабированный эквивалент 12 бит
Я не хочу делать прямое преобразование того же числа. Я хочу представить один и тот же масштаб, но в 12 бит.
Например: -
0xFF в 8 бит следует преобразовать в 0xFFF в 12 бит
0x0 в 8 бит должен преобразовать в 0x0 в 12 бит
0x7F в 8 бит должен преобразовать чтобы 0x7FF в 12 бит
0x24 в 8 бит должен преобразовать в 0x249 в 12 бит
Существуют ли какие-либо конкретные алгоритмы или методы, которые я должен использовать?
Я кодирования в C
Можете ли вы приблизительный сдвиг влево и/или вычитание 1 (или добавления)? Как 110 в 3 бит до 1100 в 4 бит, которые от 6 до 12 для максимумов от 7 до 15 (14 путем вычитания). –
Я мог бы просто отделаться от этого .... Я заметил, что это может быть решением, поскольку я выполнял вышеприведенные вычисления. Эти значения будут использоваться для управления светодиодным освещением, поэтому полная точность не является очень важной. Мне нужно будет проверить, не изменилось ли это, поэтому мне интересно узнать, есть ли другие способы решения этой задачи. – Remixed123
В этом случае сдвиг влево на 4 звучит как самый быстрый и простой подход. Это приведет к неточности около 1%, что вряд ли будет заметным. –