www.gusucode.com > gps卫星位置预报,MATLAB编写,有动画界面源码程序 > code5/gps_final_new/ProcessDouble.m

    function DoubleData=ProcessDouble(data)

mantissa=0;
temp=bitshift(bitand(data(8),128),-7);
if temp~=0
    sign_double=-1;
else
    sign_double=1;
end

two_exp=bitand(data(8),127)*16+bitshift(bitand(data(7),240),-4);

for i=1:4
    temp=-i*bitshift(bitand(data(7),2^(4-i)),i-4);
    if temp~=0
        mantissa=mantissa+2^temp;
    end
end

for m=1:6
    for i=1:8
        temp=(4-8*m-i)*bitshift(bitand(data(6+1-m),2^(8-i)),i-8);
        if temp~=0
            mantissa=mantissa+2^temp;
        end
    end
end

DoubleData=sign_double*(1+mantissa)*2^(two_exp-1023);