定点数学和整数数学有什么区别

What's the difference between fixed point math and integer math

也许这是一个转移注意力的问题,但我正在尝试了解整数数学与其他定点数系统上的数学之间存在哪些(如果有的话)差异。

在 2^0 不是位 0 的定点数上的操作是否有额外成本?

将所有数字乘以 2^10 并执行“正常”数学运算与在 22p10 定点数字系统中运算有什么区别?

这归结为命名法还是我遗漏了什么?我在微控制器的背景下工作。

当你说“差异”时,不清楚你问的是什么数学特征。算术 operations 对于 fixed-point 和整数算术本质上是相同的......这是使用 fixed-point 而不是 floating-point 的好处,对于系统floating-point更贵。

真正的区别在于 1 和 0 的字符串是如何解释的。硬件不关心你认为这些位是什么意思。

正是因为指数,整数数学更简单,涉及的工作更少。

当对fixed-point个数进行算术运算时,得到的指数取决于操作数和运算。例如,您只能将两个具有相同指数的 fixed-point 数字相加,结果是具有该 相同 指数的第三个数字。同时,当您将两个 fixed-point 数相乘时,结果的指数是操作数指数的 sum。 (除法更复杂。)

在上述每一种情况下,如果您希望操作之间的指数保持一致,则需要在操作之前或之后进行归一化。这是通过缩放值以获得所需的指数来完成的。

对于二进制数字计算机上的 base-2 fixed-point 算法,通常可以使用 bit-shifting 机器指令实现缩放。这使它成为微控制器的不错选择,因为 bit-shifting 很便宜。但它不是免费的。

整数运算是 fixed-point 运算的一种特殊化,其中操作数的指数为零。这意味着所有操作的结果也有一个零指数。这显然简化了操作本身,但这也意味着这些操作的结果可以用于后续操作(或在同一操作中循环使用),而无需对指数进行归一化,即无需移位!

缺点是现在可以表示的数字范围非常有限,不能涉及分数。