【问题标题】:What's the difference between fixed point math and integer math定点数学和整数数学有什么区别
【发布时间】:2020-10-21 16:39:01
【问题描述】:

也许这是一个红鲱鱼,但我试图了解整数数学和其他一些定点数系统上的数学之间存在什么(如果有的话)差异。

对 2^0 不是位 0 的定点数进行运算是否有额外成本?

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

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

【问题讨论】:

  • 你能解释或改写“2^0 不是位 0”吗?
  • 我的意思是整数也是定点数,其中点位于 2^0 的右侧(即 1s 位)。在具有 1 个小数位的定点数中,2^0(即 1s 位)将是位 1,位 0 将是 2^-1(即 0.5s 位)

标签: fixed-point


【解决方案1】:

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

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

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

对于二进制数字计算机上的以 2 为底的定点算术,缩放通常可以通过位移机器指令来实现。这使它成为微控制器的不错选择,因为位移很便宜。但它不是免费的。

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

缺点是现在可以表示的数字范围受到很大限制,不能涉及分数。

【讨论】:

  • 感谢您的详细回复,我必须花更多时间才能完全理解这一点,但从表面上看,我认为我正在寻求的答案是,如果您将所有值缩放 2^ 10 在 22p10 数字系统中,那么当您将 2 个数字相乘时,您需要将结果除以 2^20 以提取真值,但如果您相加则只需除以 2^10。跨操作处理这种情况是规范化,它有效地使任意定点数学比整数数学的特定情况更昂贵。我说对了吗?
【解决方案2】:

当您说“差异”时,不清楚您问的是数学的什么特征。对于定点和整数算术,算术操作本质上是相同的......对于浮点更昂贵的系统来说,这是使用定点而不是浮点的好处。 p>

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

【讨论】:

    猜你喜欢
    • 2012-06-06
    • 2011-05-11
    • 2015-04-08
    • 1970-01-01
    • 2016-10-24
    • 2023-03-09
    • 2018-01-20
    • 1970-01-01
    • 2018-11-05
    相关资源
    最近更新 更多