gpt4 book ai didi

将 32 位数字转换为 16 位或更少

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:33 28 4
gpt4 key购买 nike

在我的 mbed LPC1768 上,我的一个引脚上有一个 ADC,当它被轮询时返回一个 16 位短数字,标准化为 0-1 之间的浮点值。 Document here.

因为它将它转换为 float ,这是否意味着它是 32 位的?因为我手上的数字是小数点后六位的数字。 Data Types here

我正在运行自相关,我想减少完成分析所需的时间。 float 是 32 位长是否正确,如果是这样,将两个 32 位 float 相乘比将两个 16 位短值(非十进制)数相乘需要更长的时间是否正确?

我正在使用 C 语言对 mbed 进行编程。

干杯。

最佳答案

我应该能够很准确地对此发表评论。我曾经做过 DSP 处理工作,我们会在其中“整合”代码,这实际上意味着我们会采用信号/音频/视频算法,并将所有浮点逻辑替换为定点算法(即:Q_mn notation, etc)。

在大多数现代系统中,与浮点运算相比,使用整数运算通常会获得更好的性能,但代价是您必须编写更复杂的代码。

您使用的芯片 (Cortex M3) 没有 a dedicated hardware-based FPU : 它只模拟浮点运算,所以浮点运算会很昂贵(需要很多时间)。

在您的情况下,您可以通过 read_u16() 读取 16 位值,然后将值右移 4 次,这样就完成了。如果您正在处理音频数据,您可能会考虑 looking into companding algorithms (a-law, u-law) ,这将比简单地砍掉 4 LSBs 提供更好的主观表现从一个 16 位数字中得到一个 12 位数字。

Yes, a float on that system is 32bit , 并且很可能出现在 IEEE754 format 中.将一对 32 位值与一对 16 位值相乘可能会花费相同的时间,具体取决于所使用的芯片以及是否存在 FPU 和 ALU。在你的芯片上,乘以两个 float 在时间上会非常昂贵。此外,如果您将两个 32 位整数相乘,它们可能会溢出,因此如果您不想实现定点算法,则有一个可能的原因是使用浮点逻辑。

关于将 32 位数字转换为 16 位或更少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36664577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com