2015-07-21 61 views
1

有喜歡實現無運營商

許多面試的問題除了實現不使用操作+, - ,*,/

我的問題不是如何做這些中的一個,但而是:這些問題是什麼實際使用

是否有不支持添加的系統?還是有另一種特殊的情況我應該知道?

+1

我猜他們只是大家已經從學校知道的算法的例子。所以人們可以專注於實施。 –

回答

1

我能看到的唯一實際用途是公司如何爲加法器設計電路或微碼。儘管從理論角度來看,如何知道如何對二進制數進行加法運算是有用的,但軟件開發人員更關心運算符優先級(在括號後的乘方之後的乘法之後的加法等)

也許看看程序員知道位操作符是如何工作的,但如果語言支持添加,那麼不需要重新發明輪子。

對於大多數軟件開發工作,我會說這個問題沒有實際用處。找到與工具和文化的契合點更爲重要。

1

這裏有理論和實踐的結合。

如果具體是關於實施加法,那至少大部分是理論上的 - 基本上每個處理器都能很好地實現加法。

但是,如果它是關於實現乘法或除法,至少有一些實際應用的可能性 - 一些較小的嵌入式處理器做而不是有乘法或除法指令。像平方根,超越的功能,如正弦和餘弦等

公平同樣的操作,我也許應該補充一點,即使在人們對這種小型系統編寫代碼,大概只有相當小的比例不斷寫這個種碼。在大多數情況下,如果處理器不直接實現乘法和除法,大多數人仍然會用類似C的東西來編寫代碼,這些代碼可以假設它們存在,並且這些操作將由編譯器和/或標準庫實現。

其中一些對於像實現庫來支持任意精度整數這樣的事情也變得有趣。同樣,需要定期做這件事的人數也很少 - 大多數語言已經有相當數量的這樣的庫,所以任何人都需要從地面重新實施一個向上。

它可能出現的另一個地方是如果你爲一家實際設計和構建微處理器的公司工作。這些公司通常需要高度精確的微處理器行爲模型,包括所有處理器指令的位精確模擬,而不僅僅是「我們生產的產品看起來與英特爾的產品非常相似」,或者按照訂單上的內容。

即使把所有這些放在一起,我認爲你仍然會有一個相當小的利基。

+0

加上一個用於任意精度的整數 – Dean

-1

不需要問題的內在性質有用。

問題的目的是在有限的時間內找出關於受訪者的信息。他要做的真正的工作需要幾個小時甚至幾天的時間,我們要求他做一些我們認爲包含他可能的工作的實質的東西,我們可以在短時間內對其進行評估。例如:他能解決他以前從未見過的問題嗎?他能解釋清楚嗎?他有解決問題的態度嗎?