У меня есть выборочный набор 32-битных данных в формате 24-битный, дополнение 2, сначала MSB.Точность данных составляет 18 бит;неиспользуемые биты - это нули. Я хочу обработать числа в этом наборе образцов, чтобы найти их среднее значение.
Однако я не уверен, как преобразовать все числа в один и тот же тип, а затем использовать ихдля вычисления среднего.
Один из способов - сдвинуть по битам все числа из выборки, установленной вправо, на 14. Таким образом, я непосредственно получаю 18 полезных битов (поскольку это 24-битные данные с 18-битнымиточность, поэтому извлекаем только 18 полезных битов).Затем я могу напрямую использовать эти числа для расчета их среднего.
Ниже приведен пример выборки данных: -
0xF9AFC000
0xF9AFC000
0xF9AE4000
0xF9AE0000
0xF9AE0000
0xF9AD0000
0xF9AC8000
0xF9AC8000
0xF9AC4000
0xF9AB4000
0xF9AB8000
0xF9AB4000
0xF9AA4000
0xF9AA8000
0xF9A98000
0xF9A8C000
0xF9A8C000
0xF9A8C000
0xF9A88000
0xF9A84000
Тем не менее, 18-разрядное число по-прежнему имеет знаковый бит (MSB).Этот бит не всегда установлен и может быть 0 или 1. В зависимости от данных.
Должен ли я просто замаскировать знаковый бит, используя все числа с 0x1FFFF, и использовать их для вычисления среднего значения?
Или я должен сначала преобразовать их из дополнения 2 в целые числа, отрицая и добавив 1?
Пожалуйста, предложите правильный способ извлечь и обработать число " 24-бит, дополнение 2, MSB first "из 32-битного числа.
Заранее спасибо!