无需操作员即可实现操作

时间:2015-07-21 15:30:50

标签: algorithm architecture language-agnostic system

有很多面试问题,比如

  

在不使用+, - ,*,/

的情况下实现添加

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

是否存在不支持添加的系统?或者我应该注意另一个特殊情况吗?

3 个答案:

答案 0 :(得分:1)

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

看看程序员是否知道位运算符是如何工作的,但是如果语言支持添加,则可能没有必要重新发明轮子。

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

答案 1 :(得分:1)

这里有理论与实践的混合。

如果它具体涉及实施添加,它可能至少大部分是理论上的 - 基本上每个处理器都已经很好地实现了添加。

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

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

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

它可能出现的另一个地方是你是否为一家真正设计和制造微处理器的公司工作。这些公司通常需要高精度的微处理器行为模型,包括所有处理器指令的位精确模拟,而不仅仅是,我们生产的产品看起来与英特尔生产的产品非常相似,或者那个订单上的东西。

即使把所有这些放在一起,我认为你最终还是会有一个相当小的利基。

答案 2 :(得分:-1)

问题的内在本质不需要有用。

问题的目的是在有限的时间内找到关于受访者的事情。他将要做的真正工作需要数小时和数天,我们要求他做一些我们认为包含他可能的工作的本质的东西,我们可以在短时间内评估。例如:他能解决他以前从未见过的问题吗?他能清楚地解释一下吗?他有解决问题的态度吗?