问题标签 [fixed-point]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
332 浏览

c++ - C++ 定点库

可能重复:
C++ 定点库?

您知道 C++ 中的“简单”(且高效:))定点库吗?(不想使用提升的东西)

我看过http://www.efgh.com/software/fixed.htm

你试过吗?

0 投票
2 回答
1668 浏览

c# - 将二进制定点的 byte[] 转换为浮点值

我正在通过套接字读取一些数据。整数数据类型没有问题, System.BitConverter 方法可以正确处理转换。(所以我认为没有需要担心的 Endian 问题?)

但是,BitConverter.ToDouble 不适用于数据的浮点部分......源规范对我来说有点低级,但谈到了在更重要的方向上具有正字节偏移的二进制定点表示和低位方向的负字节偏移。

我所做的大部分研究都是针对 C++ 或处理正弦和余弦的完整定点库,这对于这个问题来说听起来有点矫枉过正。有人可以帮我用一个 C# 函数从一个字节数组的 8 个字节产生一个浮点数,比如说,一个 -3 字节的偏移量吗?

根据要求提供格式的更多详细信息:

定点数据的有符号数值应使用二进制二进制补码表示法。对于定点数据,每个数据参数的值应根据参考字节定义。参考字节定义了一个八位字段,测量单位在 LSB 位置。参考字节的 LSB 值为 1。字节偏移应由一个有符号整数定义,该整数指示数据元素的最低有效字节相对于参考字节的位置。数据元素的 MSB 代表符号位。参数绝对值的 MSB 和最高有效字节的 MSB 之间的位位置应与符号位的值相等。

浮点数据应表示为符合 IEEE ANSI/IEEE Std 754-2008 的二进制浮点数。(这句话来自不同的部分,可能是一个红鲱鱼)。

0 投票
4 回答
28616 浏览

c++ - 快速定点 pow、log、exp 和 sqrt

我有一个定点类(10.22),我需要一个 pow、一个 sqrt、一个 exp 和一个 log 函数。

唉,我什至不知道从哪里开始。谁能给我一些有用文章的链接,或者更好的是,给我一些代码?

我假设一旦我有了一个 exp 函数,那么实现 pow 和 sqrt 就变得相对容易了。

它只是我发现困难的那些 exp 和 log 函数(好像我记得我的一些日志规则,我不记得关于它们的其他内容)。

据推测,sqrt 和 pow 也会有一种更快的方法,因此即使它只是说使用我上面概述的方法,也可以理解这方面的任何指针。

请注意:这必须是跨平台的,并且是纯 C/C++ 代码,所以我不能使用任何汇编程序优化。

0 投票
3 回答
6340 浏览

fixed-point - 15.16 数字的定点乘法/除法

我正在寻找一种算法来乘除定点 15.16 数字。

我已经有加减法了。这些很简单——简单的 32 位加减法。通过乘法和除法,我还可以添加许多三角函数和指数/对数函数。而且我想我可以只处理乘法,因为我的库有一个倒数函数,我可以用它来实现除法:a * (1/b) = a / b. 但是 32 位乘法不起作用,因为它忽略了小数点。

我正在开发一个 16 位微控制器,所以我想避免超过 32 位乘法,这在我的处理器上大约需要 4 个周期。不过这并不重要,我只是想替换浮点数学。

我听说我需要改变或旋转结果,但我不确定这将如何帮助或具体如何改变它。任何建议或帮助表示赞赏!

0 投票
2 回答
9019 浏览

c - 定点处理:uint16_t 和 uint_fast16_t 有什么区别?

我有一个 16 位定点处理器,我想用它做定点处理。我正在寻找用于无符号 16 位整数的正确数据类型。

uint16_t我的问题是: a和有什么区别uint_fast16_t?(这些都包含在stdint.h。)uint_fast16_t更好,因为它更快??

谢谢!!

0 投票
3 回答
3207 浏览

c++ - C++:模拟定点除法/乘法

我正在编写一个 Fixedpoint 类,但遇到了一些障碍......乘法,除法部分,我不知道如何模拟。我对除法运算符进行了非常粗暴的抨击,但我确信这是错误的。这是到目前为止的样子:

我……不是一个很好的程序员,哈哈!

该类的“部分”是 16 位宽(但表示为一个长的 32 位,因为我想在它们被修复之前它需要空间来容纳可能的溢出),“值”也是如此,它是整数部分。当“部分”在其中一个操作中超过 0xFFFF 时,最高 16 位被添加到“值”中,然后该部分被屏蔽,因此只保留最低 16 位。这是在初始化列表中完成的。

我不想问,但如果有人知道我在哪里可以找到这样的文档,甚至只是“技巧”或如何做这两个运算符,我会很高兴的!在数学方面我是个笨蛋,我知道以前有人必须这样做/问过这个问题,但是搜索谷歌一次并没有把我带到应许之地......

0 投票
3 回答
10450 浏览

c# - .NET - 为什么 C# 中没有定点数值数据类型?

固定点数据类型似乎有很多用途。为什么.NET 中没有一个?

注意:我知道我们可以创建自己的类/结构来满足我们的定点目的和需求。那不是我的问题。我想知道为什么 MS 决定不包含定点数字数据类型。

0 投票
2 回答
3657 浏览

c - 定点乘法算法

我正在尝试将时间戳(仅秒的小数部分)从纳秒(以 10^-9 秒为单位)重新调整为 NTP 时间戳的下半部分(以 2^-32 秒为单位)。实际上,这意味着乘以 4.2949673。但是我需要在没有浮点数学的情况下进行,并且不使用大于 32 位的整数(事实上,我实际上是为 8 位微控制器编写的,所以即使是 32 位数学也很昂贵,尤其是除法)。

我提出了一些运行良好的算法,但我在数值方法方面没有任何真正的基础,所以我很感激任何关于如何改进它们的建议,或者任何其他更准确的算法和/ 或更快。

算法 1

选择前两个常数是为了稍微低于而不是超过正确的数字,并且根据经验确定最终因子 67078 来纠正这一点。在正确值的 +/- 4 NTP 单位内产生结果,即 +/- 1 ns - 可接受,但残差随ns. 我想我可以添加另一个术语。

算法 2

基于 4.2949673 的二进制展开(实际上是基于 2.14748365 的二进制展开,因为我是先加倍加一来完成四舍五入的)。可能比算法 1 更快(我还没有完成基准测试)。+3 是根据经验确定的,以抵消截断所有这些低位的下冲,但它并没有做最好的工作。

0 投票
1 回答
713 浏览

android - OpenGL ES 的正射投影问题

我正在使用 Open GL ES 在 Android 中工作。我一直在尝试将我们的 UI 从 Android 视图移动到 3D。我看到顶点放置有一些奇怪的行为。

我有两个不同的四边形。一个是 -0.5,-0.5 -> 0.5,0.5,另一个是 0,0 -> 1,1 但是当我渲染它们时,它们都出现在彼此之上。好像它们都是 0,0 -> 1,1(正交投影设置为从 0,0 到 1,1)。它们都是通过同一管道发送的,所以我不确定这是怎么发生的。

另一个奇怪且可能相关的问题。将其中一个四边形平移 0.5 将其完全移动到屏幕上,而不是像我预期的投影 0,0 -> 1,1 的一半。

以下是 Java 中的一些片段...

//固定点类 public static final int FIXED_POINT = 16;

//顶点设置 mNumVerts = 6;

//和....

//投影设置

//使成为

0 投票
3 回答
7819 浏览

android - 使用 RotateAnimation 围绕固定点旋转 Android 中的 ImageView

我想围绕一个固定点连续旋转图像 360 度。我已经看过一些例子,例如:

这确实会旋转图像,但它会在弧形/圆形路径上旋转。IE。图像以圆周运动移动/旋转,但并未固定在其起始位置。

我基本上想要的是模仿风车手臂的旋转。

有什么想法吗?