標準の 32 ビット IEEE 754 浮動小数点値では、数値の最上位ビットと最下位ビットの最大比率は 2 23です。これは、浮動小数点エンコーディングには仮数 (または小数) 用に 24 ビット (「暗黙のビット」を含む) があるためです。したがって、たとえば最上位ビットが 2 23で最下位ビットが 2 0 (1) であったり、最上位ビットが 2 12で最下位ビットが 2 -11であったりします。あなたの場合、最上位ビット 2 -1と最下位ビット 2 -24を使用したい場合があります。マッピング先の範囲 ([0, 1]) を指定しますが、マッピング元の範囲は指定しないため、使用する倍率を指定できません。
[0, 65536) の範囲の符号なし 16 ビット数値からマッピングする場合、1/65536 の倍率を使用できます。(多くの言語では1./65536
、浮動小数点定数を取得するように記述し1/65536
ます。これはゼロに評価される整数式になります。) このスケーリングにより、すべての数値が、数値の「下」で利用可能な精度でターゲット範囲にマップされますが、数値を追加したり、マグニチュードを増加させるその他の操作を行ったりするためのマージンを残さないでください。結果を [0, 1] の間隔に保ちながら、より多くの演算の余地を残したい場合は、比率を大きくする (スケーリング ファクターを小さくする) 必要があります。
倍率には 2 の累乗を使用する必要があります。2 のべき乗で乗算しても、2 進浮動小数点では丸め誤差はありません。10 の累乗またはその逆数 (2 進浮動小数点では 10 の累乗の逆数を正確に表すことができないため、これらは必然的に概算になります) を乗算すると、通常、丸め誤差が発生します。
標準の 64 ビット IEEE 浮動小数点値では、最大比率は 2 52です。
16BIT_MULTIPLIER の最大値を尋ねますが、これが実際に必要な値である可能性は低いです。数値の下位ビットが 2 -149に達するまで、 16BIT_MULTIPLIER を好きなだけ大きくすることができます。その時点で、指数範囲 (上位ビットの場合は 2 ~126 ) の終わりに達し、それより小さい値のビットは (32 ビット浮動小数点で) 表すことができなくなります。