-32768 から 32767 までの 16 ビットのサンプルがあります。スペースを節約するために、8 ビットのサンプルに変換したいので、サンプルを 256 で割り、128 を足します。
-32768 / 256 = -128 + 128 = 0
32767 / 256 = 127.99 + 128 = 255.99
これで、0 は 1 バイトに完全に収まりますが、255.99 は 255 に丸める必要があり、精度が失われます。これは、元に戻すと 32767 ではなく 32512 が得られるためです。
元の最小値/最大値を失わずにこれを行うにはどうすればよいですか? 非常に明白な思考エラーを犯していることはわかっていますが、どこに間違いがあるのか わかりません。
もちろん、除算によって精度が失われ、8 ビット サンプルから元の値を推測できないことは十分承知していますが、なぜ元の最大値が得られないのか不思議に思っています。