2013-10-28 4 views
0

Я следующий код, я просто скопировал некоторые данные из внешнего ОЗУ в MCU в буфер под названием «данные»Фиксированная точка с плавающей точкой

double p32  = 4.294967296e+009;  /// equals to 2^32 in decimal notation 
int32_t  longhigh; 
uint32_t  longlow; 

offset = mapdata(); //Points to the data I want, 55 bit fixed point on HW 
longhigh = data[2*offset+1]; //Gets upperpart of data 
longlow = data[2*offset]; //Gets lower part 
double floating = (longhigh*p32 + longlow); // What is this doing? How does it work? 

Может кто-нибудь объяснить, что последняя строка кода для меня ? Почему мы умножаемся на p32? Благодарю.

ответ

0

Умножение на p32 эквивалентно сдвигу влево на 32 бита. Это также приводит к преобразованию типа продукта (от int до double), а также к сумме. Таким образом, вы можете сохранить 64-битные int s в буфере и преобразовать их в double с, когда это необходимо.

Смежные вопросы