2016-11-27 14 views
-1

以下の情報を提供してGPSデータを計算する必要があります。上記の情報に基づいてGPSデータの計算方法は?

Bits  size description 
Bits 0-25 26 Latitude Location latitude Latitude as 26-bit integer * 100,000 
Bits 26-51 26 Longitude Location longitude Longitude as 26-bit integer * 100,000 

、Iは 1)緯度値は+ -90.xxxxxxかもしれない、すなわち、それは^ 7 90(2)の値に対応するために7ビットが必要であることを理解します。その情報に基づいて、どのようにLatitudeを計算し、仮数(7ビット)と指数(19ビット)部分に変換するのですか?また、符号ビットはどうですか?例えば、値87.45は、87が7ビットに格納されるように記憶されなければならず、19ビットが値45を格納する。

2)同様の経度値は、どのようにLongitudeを計算し、仮数部(8ビット)と指数部(18ビット)に変換するのかについての情報に基づいて、180(2^8)また、符号ビットはどうですか?

例えば値130.50ニーズは130が18ビットとして値50

答えて

1

私はあなたがこの間違ったを見ていると思うが格納8ビットに格納されますような方法で保存する...あなたがされています整数値としてlatとlonを含む52ビットの値が与えられた場合、右か?仮数については心配しないでください。入力の2つの部分を別々の整数で調べ、それぞれを100,000で割って次数を取得する必要があります。

#include <stdint.h> 
int main() { 
    int64_t input = yourGpsVal(); 
    // note: lat/lon may be the wrong way round 
    // strip off the rightmost 26 bits and convert to double 
    double lat = (input >> 26)/100000.; 
    // zero the bits left of the rightmost 26 and convert to double 
    double lon = (input % (1 << 26))/100000.; 
} 

がWandboxでこのデモを見てください:

のようなものを試してみてください。 http://melpon.org/wandbox/permlink/xtiDOfMKH0wK5LIC