2012-03-23 15 views
1

2つの大きな2進数を追加しようとしています(つまり、ビット数が31より大きい)が、NumberFormatExceptionを取得したためにスタックしました。以下はexception-2つの大きな2進数を追加する

Integer.parseInt(binaryNo, 2); 

を投げている行は、私の考えは、その後に一緒に追加することがInteger.toBinaryString(integerSum)を使用して戻ってバイナリにintegerを変換し、integer最初にバイナリ数字の両方を変換することでした。しかし、整数オーバフローが発生するので、31より大きいビットを持つ2進数には適用できません。最適な方法(最小時間)で大きな2進数の加算を実行できる方法を教えてください。ありがとうございました。

答えて

9

java.math.BigInteger。でそれを構築:

public BigInteger(String val, 
        int radix) 

この場合、あなたの基数は、あなたが少し異なる算術演算を実行するように、各BigIntegerが不変であること2。注:

BigInteger i = new BigInteger(...); 
Biginteger j = new BigInteger(...); 

BigInteger sum = i.add(j); // neither i nor j are modified 
3

あなただけの代わりにjava.math.BigIntegerを使用することができます。これは任意の精度を持ち、任意の基数を扱うことができます(バイナリ、ベース2の場合)。

+0

のBigIntegerは魔法です。 –

1

java.math.BigIntegerクラスを使用することを検討してください:

BigInteger first=new BigInteger(binaryNo1, 2); 
BigInteger second=new BigInteger(binaryNo2, 2); 

BigInteger result=first.add(second); 
String binResult=result.toString(2); 
+0

はい。あなたが正しいです。 –

関連する問題