2013-10-28 39 views
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?謝謝。

回答

0

通過p32相乘等效於通過32位左移。它還導致類型轉換爲產品(從intdouble),以及用於總和。這樣,你基本上可以保持64位int S IN緩衝區,並將它們在需要時轉換爲double秒。