次のコードが-12をどのように与えるのか理解できません。私を助けてください。整数を否定すると予期しない結果が発生する
int a=11;
int result=~a;
System.out.println(result);
私はそれが4.を与えると思ったが、はい、先行ゼロを見た。
2の補数と何か関係があると思いますが、カントはどうしたらいいか分かります。
次のコードが-12をどのように与えるのか理解できません。私を助けてください。整数を否定すると予期しない結果が発生する
int a=11;
int result=~a;
System.out.println(result);
私はそれが4.を与えると思ったが、はい、先行ゼロを見た。
2の補数と何か関係があると思いますが、カントはどうしたらいいか分かります。
11
のバイナリ表現は00000000000000000000000000001011
です。
この番号の否定は11111111111111111111111111110100
です。
これは-12
の2の補数表現です。
早急な対応のためにEranに感謝しますが、私は0100から-12に変換し、私は2のことをしなければならない補体? – pankaj
@pankaj負の数は常にJavaでは2 'の補数で表されます。正の数を無効にすると、負の数が得られます。 '11111111111111111111111111110100'の値は、それに1100(12)を加えて2^32(1に続いて32 0)にする必要があるため、-12です。同様に '11111111111111111111111111111111'は' -1'です.2^32に達するには、それに1を加えなければならないからです。 – Eran
非常に有用だった.... thanx @Eran – pankaj
2の補数=(-x) - 1 したがって、これにより-12が得られます。これを読んでください:https://stackoverflow.com/questions/8305199/the-tilde-operator-in-python –