gpt4 book ai didi

定点符号 Q8 到 Q4 格式的转换

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:43 25 4
gpt4 key购买 nike

我需要从定点符号 Q8 format 进行转换到定点签Q4 format在c。我假设我只能进行四位位移,这是正确的吗?我需要考虑符号位吗?

更新:这是针对 ARM11 架构的,但我更喜欢非架构特定的解决方案。

谢谢

最佳答案

位移位应该可以工作,并且还将处理许多体系结构上的符号位。如果是负数,将移入更多的位,但您要么只使用低 5 位,要么在 C 中进行算术运算,您需要这些额外的位来形成正确的二进制补码。

假设是整数,代码将简单地是:

int q4 = q8 >> 4;

也许你想四舍五入:

int ahalf = q8 >= 0 ? (1<<3) : (1<<3)-1;
int q4 = (q8+ahalf) >> 4;

好的,我听了 Oli 的意见并提出了一个解决方案,用于不正确转换符号的架构:

int q4 = q8 / (1<<4);

如果可能,优化器应将除法转换为移位。

通过舍入,第一个解决方案是

int ahalf = q8 >= 0 ? (1<<3) : -(1<<3);
int q4 = (q8+ahalf) / (1<<4);

感谢 R.. 的坚持,我终于测试了所有版本,现在它们在 Linux 下使用 Intel 32 位有符号整数产生了正确的结果。

关于定点符号 Q8 到 Q4 格式的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864515/

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