【发布时间】:2021-05-20 14:59:04
【问题描述】:
我正在处理音频数据处理(来自/到WAV 文件,16 位),表示具有double 值(64 位)的样本。
由于我正在处理大量幅度域卷积,所以很多时候我的结果样本的(正或负)值“高于”可以用 16 位表示的“最大数据”,并且结果是它们被截断了。
所以我需要先规范化我的数据,然后再将其写入WAV 文件。
但我不清楚可以在 16 位上表示的最大(和最小)double 值是多少。
注意:这里我指的最小值是16位能表示的最大负双精度数。
编辑:16-bits double 我指的是从 16 位 WAV 文件中读取的数据,作为 double 值存储在我的代码中。经过幅度卷积后,这个数据发生大于1或小于-1。
【问题讨论】:
-
@Ted Lyngmo 感谢您的回答,我需要澄清一下:如何再次将其转换为
double?我需要在 wav 文件中写入双精度值。一个简单的static_cast<double> result;可以吗? -
-32,768 到 +32,767 是 16 位有符号整数的范围。把它变成双精度不应该改变这一点。 https://ideone.com/ZnbKfR
-
这是一个描述 16 位浮点位布局的 Wikipedia 条目:IEEE 16-bit floating point