Lors de l'encodage d'un nombre à virgule flottante en tant que fixed point integerQ16.16 avec int (nombre * 0x10000), quelle est la plage de virgule flottante qui peut être représentée sans perte de précision?Quelle est la plage d'un flottant représenté comme un entier Q16.16?
0
A
Répondre
2
La plage est de 32767 à -32768 plus ou moins la partie décimale au maximum. Ainsi,
32767 + 65535/65536 à - 32768 - 65535/65536.
Cependant la précision est une chose différente à la gamme. Vous avez jusqu'à 31 bits de précision.
1
En supposant que vous utilisez un complément à deux entier de 32 bits pour représenter un Q15.16, la plage de l'entier est [2^31-1, -2^31]
ou [2147483647, -2147483648]
et l'échelle est 2^-16
ou 1/65536
. Par conséquent, la plage de la valeur du point fixe est [2147483647/65536, -2147483648/65536]
ou approximativement [32767.99998, -32768]
.
Je pense que vous vouliez dire '65535/65536' au lieu de' 65537/65535' (ce dernier est> 1)? – njuffa
Oui, corrigé. –