【问题标题】:Implementing an operation without operators实现没有运算符的操作
【发布时间】:2015-07-21 15:30:49
【问题描述】:

面试题很多

不使用+、-、*、/实现加法

我的问题不是关于如何做其中之一,而是:这些问题的实际用途是什么?

是否有不支持加法的系统?还是我应该注意其他特殊情况?

【问题讨论】:

  • 我猜它们只是每个人在学校都已经知道的算法示例。这样人们就可以专注于实施。

标签: algorithm architecture language-agnostic system


【解决方案1】:

我能看到的唯一实际用途是公司是否为加法器设计电路或微码。虽然从理论角度了解如何对二进制数执行加法很有用,但软件开发人员更关心运算符的优先级(括号后取幂后乘法后的加法等)

也许看看程序员是否知道位运算符的工作原理很有用,但如果语言支持加法,那么就没有必要重新发明轮子了。

对于大多数软件开发工作,我会说这个问题没有实际用途。找到与工具集和文化完美契合的方式更为重要。

【讨论】:

    【解决方案2】:

    这里既有理论又有实践。

    如果它是专门关于实现加法的,它可能至少大部分是理论上的——基本上每个处理器都已经很好地实现了加法。

    然而,如果它是关于实现乘法或除法,那么至少有一些实际应用的可能性——一些较小的嵌入式处理器没有有乘法或除法指令。同样的运算,如平方根,超越函数,如正弦和余弦等。

    公平地说,我可能应该补充一点,即使在如此小的系统上编写代码的人中,可能也只有相当少的百分比曾经编写过这种类型的代码。在大多数情况下,如果处理器不直接实现乘法和除法,大多数人仍然会用 C 之类的东西编写可以假设它们存在的代码,并且这些操作将由编译器和/或标准库实现。

    其中一些对于诸如实现库以支持任意精度整数之类的事情也变得有趣。同样,需要定期执行此操作的人数非常少——大多数语言已经有相当数量的此类库,因此很少有人需要从头开始重新实现一个起来。

    另一个可能出现的情况是,如果您为一家实际设计和制造微处理器的公司工作。此类公司通常需要其微处理器的高度准确的行为模型,包括对所有处理器指令的位精确模拟,而不仅仅是“嗯,我们生产的产品看起来与英特尔生产的产品非常相似”或类似的东西。

    即使将所有这些放在一起,我认为您最终仍然会获得一个相当小的利基市场。

    【讨论】:

    • 任意精度整数加一
    【解决方案3】:

    问题的内在性质没有必要有用。

    这个问题的目的是在有限的时间内找出关于受访者的一些信息。他要做的真正工作需要数小时和数天,我们要求他做一些我们认为包含他可能工作的精髓的事情,我们可以在短时间内评估。例如:他能解决一个他从未见过的问题吗?他能把事情解释清楚吗?他有解决问题的态度吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多