1

Java の割り当てでは、コマンド ラインから文字列として導入される任意の数値を (どんなに大きくても) バイナリに渡すことができる必要があります。

次に、これらの数値の加算、乗算、減算、および除算を可能にするメソッドを生成します。

私の質問は最初です:

文字列をバイナリにする方法

例えば:

123 は 1111011 になります

8403678 は 100000000011101011011110 になります

などなど…

次に、最大の問題は、それらを合計したり、互いに減算したりすることです。

最後に、結果を 2 進数から 10 進数に戻す必要がありますが、前のケース (2 進数から 10 進数文字列への変換) よりも方法を理解するのに苦労しています。

例えば:

1111011 が 100000000011101011011110 に追加された場合、結果は 100000000011101101011001 になり、結果として出力される 8403801 になります。

このプロジェクトの最終的な目的は、java.math.BigInteger (もちろん使用せずに) などの独自のクラスを作成し、任意に大きな数 (Int が処理できるよりも大きい) を処理することです。

追加情報が必要な場合はお知らせください。すぐにお答えします。

4

1 に答える 1

0

BigInteger を使用せずに大きな数を処理できるようにする必要があるため、任意に大きな数を表す方法を見つける必要があります。明らかintにしません。簡単な方法の 1 つは、数値を文字列として表すことです。たとえば、数値 123 は文字列 "123" として格納できます。

バイナリへの変換には、除算やモジュロなどの中間演算が必要になります。したがって、数値が文字列に格納されている場合にこれらを行う方法について考える価値があります。これは宿題なので、答えだけではなく、いくつかのガイダンスを提供したいと思います。

足し算をしたいとします。

  1. 手で大きな数を足す方法を考えてみてください。各数字のどの数字を使用し、どのように操作して答えを得るのですか? このアルゴリズムは非常に単純で、説明できれば、コンピューターに指示を与えることもできます。(さらに、最初に 1 の数字を追加し、次に 10 の数字などを追加します...必要に応じて携帯することを忘れないでください!)
  2. などのメソッドを使用して、数値文字列の数字を取得できることに注意してくださいcharAt(int n)。これは、文字列のインデックス n の文字を返します。を使用して整数にInteger.parseInt()変換します (数値文字列を取り、整数に変換します)。
  3. これで、次のように考えることができます: 数値の 1 の桁が必要な場合、それは文字列のどのインデックスになるでしょうか? これから始めて、大きな数の文字列から必要な数字を取得する方法を理解できるはずです。これで、アルゴリズムを実装できます。

最後に、基数 10 から 2 進数に変換するには、基数がどのように機能するかを理解する必要があります。これにより、明確かつ迅速な紹介が得られます: http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary 上記のリンクのセクション「10 進数から 2 進数への変換」では、方法が説明されています。まさにあなたがやりたいことのために。幸運を。

于 2013-03-27T22:03:04.103 に答える