Я распаковываю некоторые данные из двойных слов.
unsigned char * current_word = [address of most significant byte]
Мои первые 14 MSB являются целочисленными значениями.Я планирую извлечь их, используя побитовое И с 0xFFFC.
int value = (int)( (uint_16)current_word & 0xFFFC );
Мои следующие 6 битов являются дробным значением.Здесь я застрял на эффективной реализации.Я мог бы извлечь один бит за раз и построить дробь 1/2 * бит + 1/4 + бит + 1/8 * бит и т. Д., Но это не эффективно.
float fractional = ?
Последний12 LSB - это другое значение типа int, которое, я чувствую, я могу вывести, используя снова и снова.
int other_value = (int) ( (uint_16)current_word[2] & 0x0FFF );
Эта операция будет выполнена с 16348 двойными словами и должна быть завершена в течение 0,05 мс, чтобы работать как минимум на 20 Гц.
Я очень плохо знаком с битовыми операциями, но я рад учиться.Чтение материалов и / или примеров будет с благодарностью!
Редактировать: я написал ИЛИ, когда имел в виду И