首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个定点表示之间转换

在两个定点表示之间转换
EN

Stack Overflow用户
提问于 2017-11-09 08:15:53
回答 1查看 422关注 0票数 2

我正在尝试将一个数字从一个定点表示转换为另一个定点表示。我使用2的补码表示(Qmf表示),这是为了验证硬件实现。硬件实现的工作方式如下:

输入数据为Qmf格式。输入数据是8位宽,并且具有6位的分数长度。我想将它转换为4位数字与4个小数位(没有整数位),我有一些疑问。

我注意到,当我试图将像1.984375这样的数字从Q26 {range -2,1.984375 }格式转换为Q04 {range -0.5,0.4375}格式时,硬件实现运行如下:我读取位5-2,因为位6和7用于整数部分,并将其存储在4位寄存器中。因此,当转换为Q04格式时,该值被解释为-0.5。-0.5正确吗?产生的错误数量似乎是巨大的。我做错了什么吗?如果上面提到的方法是正确的。有没有什么标准的程序可以在模仿我上面描述的硬件方法的软件中从一个定点表示转换到另一个定点表示。我正在考虑将数字从Q26表示转换为浮点,然后再将其转换回定点。在软件中有没有一种更干净的方法来做这件事?

EN

回答 1

Stack Overflow用户

发布于 2018-02-17 19:16:44

我认为你可以通过简单的位掩码操作和一点逻辑来完成转换。

如果你的Q26数是正的(比特-7是零),那么相应的Q04数就是你的原始数字的比特-2到比特-5,前提是比特-6是零。这意味着您的原始数字必须小于1。

如果你的Q26数是负的(比特-7是1),那么相应的Q04数也是比特-2到比特-5或你的原始数字,但这一次假设比特-6是1,并且比特2-5中至少有非零比特。这意味着您的原始数字必须大于负1。

在每种情况下,忽略位0和1都会产生舍入误差,您可能希望通过在Q04数的最低有效位上加一或减一来说明这一点。这显然需要额外的算术运算,并有可能溢出您的Q04数字的允许范围。

如果您想在Python语言中尝试这一点,可以尝试使用诸如spfpm之类的库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47191909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档