2013-03-11 157 views
1

對於Java分配,我需要能夠傳遞任何數字,這些數字將作爲字符串通過命令行(無論多大)引入二進制文件。如何在Java中使用二進制進行算術運算?

然後生成允許這些數字添加,乘,減,除的方法。

我的問題是第一:

如何讓我的字符串轉換成二進制

如:

123會變成1111011

8403678將成爲100000000011101011011110

等等...

然後最大的問題是讓他們加起來,相互減去等。

最後,我需要能夠將結果從二進制轉換回十進制,我有更多的麻煩理解如何做到這一點比以前的情況(從二進制轉換爲十進制字符串)。

如:

如果1111011加入100000000011101011011110結果將是100000000011101101011001,然後它會變成8403801我會打印出結果。

這個項目的最終目標是創建我們自己的類,比如java.math.BigInteger(當然不使用它)和處理任意大數字(大於Int可以處理的數字)。

如果有任何額外的信息需要請讓我知道我會及時回答。

+0

看看BigInteger類。它會幫助你開始。在那之後,我們想到了大量的循環除以2並取模2。 – 2013-03-11 23:46:35

+0

如果你做這個練習,你必須理解二進制和它的算術。只有這樣你才能將這些知識轉化爲Java。網絡上有很多信息。例如:http://academic.evergreen.edu/projects/biophysics/technotes/misc/bin_math.htm或http://www2.cs.uregina.ca/~rbm/cs100/notes/binary/binary.html – 2013-03-11 23:51:11

+0

這個項目的最終目標是創建我們自己的類,比如java.math.BigInteger(沒有使用它)和處理任意大的數字(大於Int可以處理的數字)。 – user2155003 2013-03-11 23:53:29

回答

0

由於您必須能夠在不使用BigInteger的情況下處理大量數據,您需要找到一種方法來表示任意大的數字。顯然int不會。一個簡單的方法是將數字表示爲字符串。例如,數字123可以存儲爲字符串「123」。

轉換爲二進制將需要一些中間操作,如分割和模。因此,當您的數字存儲在字符串中時,如何做到這一點值得思考。由於這是作業,我不想只給你答案,而是一些指導。

假設你想添加。

  1. 想想你如何手工添加大數字。你使用每個數字的哪個數字,以及如何操作它們以獲得答案?這個算法非常簡單,一旦你可以解釋它,你也可以給出一個計算機指令去做。 (另外,你首先添加一位數字,然後是十位數字等,如果必須,請記住攜帶!)
  2. 請注意,您可以通過使用諸如charAt(int n)。這將返回字符串的索引n處的字符。通過使用Integer.parseInt()(它接受一個數字字符串並將其轉換爲整數)將其轉換爲整數。
  3. 所以,現在你可以這樣想:如果我想要一個數字的位數,那麼在字符串中的索引是什麼?從這開始,你應該能夠弄清楚如何從一個大數字字符串中得到你想要的數字。現在,你可以實現你的算法。

最後,要從十進制轉換爲二進制,您需要了解數字基礎如何工作。這給出了一個清晰而快速的介紹:http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary 上述鏈接中的「從十進制轉換爲二進制」一節描述了一種方法,可以準確執行您想要執行的操作。祝你好運。

相關問題