Alla fine ne sono uscito fuori. Bastardi.

Il maledetto intero a 16 bit contiene I 3 bit di controllo negli ultimi bit e non nei primi!
Non so se è scritto ma non me ne sono accorto o non c'è proprio alcuna indicazione.
Dunque il codice per gestire una cosa del genere è questo

codice:
unsigned short num = 1328;
num = num >> 3;
float value = (num * 2.4f * NominalValue) / 4096;
E ottengo il mio bel valore (verificato sul dispositivo)