0

我有以下代码,我刚刚将一些数据从外部 RAM 复制到 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?谢谢。

4

1 回答 1

0

乘以p32相当于左移 32 位。它还会导致乘积(从intdouble)以及总和的类型转换。这样,您基本上可以将 64 位ints 保留在缓冲区中,并double在需要时将它们转换为 s。

于 2013-10-28T11:59:23.497 回答