最大(和最小)16 位双精度值是多少?
What is the maximum (and minimum) 16-bit double value?
我正在研究音频数据处理(from/to WAV
文件,16 位),表示具有 double
值的样本(64位)。
由于我使用了大量的振幅域卷积,很多时候我得到的样本具有(正或负)值“高于”可以用 16 位表示的“最大数据”,结果是它们被截断了。
所以我需要规范化我的数据,然后再将其写入WAV
文件。
但我不清楚可以用 16 位表示的最大(和最小)double
值是多少。
注意:这里我指的是最小值是16bits可以表示的最大负double数.
编辑:16-bits double
我指的是从 16 位 WAV 文件读取的数据,存储在我的代码中作为 double
值 。经过振幅卷积后,这个数据恰好变得大于1或者小于-1。
What is the maximum (and minimum) 16-bit double value?
不清楚“16 位双精度”是什么意思。
C++ 中有一个数值类型double
。它是一个浮点类型。 C++ 语言没有定义其最大或最小可表示值(尽管它确实定义了一个最小范围,实现可能会超过),但可以使用 std::numeric_limits
.
检查这些限制
然而,在大多数系统上,double
是一个 64 位类型,即 IEEE-754 标准中指定的“双精度”浮点类型。
一个16位类型最多可以表示216个不同的值。
如果用来表示无符号整数,则取值范围为[0, 216).
如果用于表示有符号整数,范围将取决于符号的表示方式。在最常见的 2 的补码表示中,范围将是 [-216-1、216-1)
WAV files
在Microsoft WAVE 格式中,16 位样本是2 的补码有符号整数。取值范围见上一段
简单的答案是你的分母(用于规范化 16 位数据)是 2^15,假设有符号 PCM。
将所有传入的 16 位数据除以 32767 是我的规范化解决方案。也许可以为32768做一个案例,因为数据范围从-32768到32767。但我一直使用32767.
我正在研究音频数据处理(from/to WAV
文件,16 位),表示具有 double
值的样本(64位)。
由于我使用了大量的振幅域卷积,很多时候我得到的样本具有(正或负)值“高于”可以用 16 位表示的“最大数据”,结果是它们被截断了。
所以我需要规范化我的数据,然后再将其写入WAV
文件。
但我不清楚可以用 16 位表示的最大(和最小)double
值是多少。
注意:这里我指的是最小值是16bits可以表示的最大负double数.
编辑:16-bits double
我指的是从 16 位 WAV 文件读取的数据,存储在我的代码中作为 double
值 。经过振幅卷积后,这个数据恰好变得大于1或者小于-1。
What is the maximum (and minimum) 16-bit double value?
不清楚“16 位双精度”是什么意思。
C++ 中有一个数值类型double
。它是一个浮点类型。 C++ 语言没有定义其最大或最小可表示值(尽管它确实定义了一个最小范围,实现可能会超过),但可以使用 std::numeric_limits
.
然而,在大多数系统上,double
是一个 64 位类型,即 IEEE-754 标准中指定的“双精度”浮点类型。
一个16位类型最多可以表示216个不同的值。
如果用来表示无符号整数,则取值范围为[0, 216).
如果用于表示有符号整数,范围将取决于符号的表示方式。在最常见的 2 的补码表示中,范围将是 [-216-1、216-1)
WAV files
在Microsoft WAVE 格式中,16 位样本是2 的补码有符号整数。取值范围见上一段
简单的答案是你的分母(用于规范化 16 位数据)是 2^15,假设有符号 PCM。
将所有传入的 16 位数据除以 32767 是我的规范化解决方案。也许可以为32768做一个案例,因为数据范围从-32768到32767。但我一直使用32767.