2

2進数を処理するときにこの2つの方法が2つの異なるアプローチを使用するのはなぜですか?メソッドで負の2進数を表す文字列は文字でInteger.parseInt(String s, 2)始まる必要-がありInteger.toBinaryString(int i)ますが、1が追加された文字列を返します。だから、このコード

Integer.parseInt(Integer.toBinaryString(-1), 2);

スローしjava.lang.NumberFormatExceptionます。そのような行動の理由は何ですか?

4

2 に答える 2

2

これは仕様によるものです。Integer.toBinaryString

整数引数の文字列表現を基数2の符号なし整数として返します。

(強調が追加されました)。

つまりtoBinaryString、整数を共通の2の補数表現としてフォーマットする方法を提供します。これは、ほとんどのプロセッサが実際に符号付き整数を内部に格納する方法です。

于 2013-02-11T09:41:53.560 に答える
0

Integer::parseInt(String,int)-は文字列を期待しているため、負の数の記号を探しています。これはInteger::toBinaryString(int)、入力に相当するバイナリを提供するためのものです。2進数では、負の数は2の補数で表されます。

于 2013-02-11T09:42:18.523 に答える