2011-11-21 64 views
2

我在採訪中被問到了這個問題。對算法的改進

如果您有兩個以二進制形式表示並以字符串形式存儲的數字。你將如何執行簡單的加法。這是很容易的部分。 (我的解決方案:通過最短的運行,並跟蹤進位,重複其餘)

困難的部分是,當他問我:

你會如何使用硬件進行處理更快。

任何建議SO社區?

+0

我建議在http://en.wikipedia.org/wiki/Carry-lookahead_adder – Timulus

回答

4

我會說,將它們轉換爲適當的整數,然後使用硬件(ALU)執行加法,然後在需要時將結果轉換回字符串。

+0

處取得一個高峯,還記得二進制形式與特定的endianess綁定,這可能會非常棘手,有時是因爲人們忘記了這一點,並且數據與其表示之間的差異。 – user827992

1

將數字轉換爲整型變量並立即讓CPU立即進行加法。如果您願意,您可以將數字分成幾位。

+0

你是什麼意思「十進制整數」。計算機大概是喜歡在二進制工作;-) – aioobe

+0

我的意思是一個實際的整數變量,我會用一個更清晰的術語。 – Blindy

+0

我不認爲這會更快。您仍然需要遍歷字符串中的每個字符來構造數字的二進制表示形式。 – Timulus