【问题标题】:Exponent Binary Numbers指数二进制数
【发布时间】:2012-07-21 15:17:52
【问题描述】:

有人能告诉我对二进制数求幂的逻辑吗?比如我想取110^10,但是不知道背后的逻辑。如果有人能提供给我,那将是一个很大的帮助..(我希望它以纯二进制完成,没有转换,也没有循环乘法。只是逻辑......)

【问题讨论】:

  • 你问的是如何计算 6**2?
  • 我想纯粹用二进制来做。没有转换,没有循环乘法,纯二进制逻辑..
  • 一切都是纯二进制逻辑,如果你想要固定精度(例如 uint16)逻辑,你可以避免循环,否则:否则我们不会有计算“功率”的算法,只有一些便宜的“纯二进制”操作

标签: binary exponent


【解决方案1】:

二进制指数非常容易。它们只是简单的添加和转换。

数字 110 是您的起点。 从数字 10(即 0)向后计算,它是零,所以这意味着“不要添加它”。

现在你左移 - 所以 110 变成 1100

现在您处理 10 的下一位(即 1) - 它是一个,所以这意味着“将它添加到结果中” - 到目前为止它是 0,因为我们还没有添加它,所以结果现在是 1100

没有更多的事情要做 - 所以答案是 1100

如果你在做 110^110 - 你会再做一个 - 所以 - 你再次转移并现在得到 11000。

最后一位又是一个,所以现在添加: 1100+ 11000 = 100100

110^10=1100 即 6^2=12

110^110=100100 即 6^6=36

【讨论】:

  • 呃,这不是求幂。那是乘法,6^2!=12 但 6*2=12。
【解决方案2】:

peenut 是正确的,因为求幂并不关心你用什么基数来表示你的数字,而且我不知道你所说的“只是逻辑”是什么意思,但这里有一个尝试。

在 Wikipedia 上的快速搜索显示 this algorithm。基本思想是平方你的基础,存储结果,然后平方结果并重复。这将为您提供答案的因素,然后您可以将它们相乘。我认为它是一种“二进制搜索”风格的求幂算法,因为您可以通过平方和存储跳过很多中间步骤。

【讨论】:

    【解决方案3】:

    Exponentiation 是独立于数字的实际文本表示的操作(例如,以 2 为底 - 二进制,以 10 为底 - 十进制)。

    也许你想问一下二进制XOR(异或)运算?

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多