【问题标题】:How to convert mantissa from decimal to binary efficiently如何有效地将尾数从十进制转换为二进制
【发布时间】:2016-10-30 09:02:08
【问题描述】:

我知道教科书的方法,我们将尾数乘以 2 ,将其整数部分作为下一位,将小数部分乘以 2 并重复,直到我们得到零或达到所需的精度。

有没有比上述算法有效的将尾数从10进制转换为2进制的算法?

【问题讨论】:

  • 定义高效。这是一个 O(n) 算法 - 有些人会说它足够高效。
  • O(log n) 怎么样?
  • 或者一种算法,我可以通过一次乘法获得多个位。如果常数足够小,是否为 O(n) 无关紧要,因为我不必转换大数。
  • 我的意思是,你不能只做x = your_number 并打印出它的位吗?该数字在内部以二进制形式存储,因此您不会真正使用计算机进行转换(它已经以二进制形式存储)。
  • 不,这是为了演示。

标签: binary theory


【解决方案1】:

您提出的算法在O(n) 时间运行,其中 n 是所需的位数。我们不能做得比这更好,因为我们必须以某种方式计算输出的所有n 所需位,因此任何算法都必须至少为O(n),否则输出不可能包含所有所需信息。

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多