これは本当に基本的な質問ですが、申し訳ありませんが正の面でマイナス1があるのはなぜですか?なぜJava 2の最大整数は^ 31 - 1で2ではなく^ 31
ゼロが保存されているかどうかは関係ありますか?私はバイナリのために可能な限り最高の進数を計算すると、ちょうど同じルールがJavaの整数に対して適用しないでください3ビット符号なしのために、それは
1*2^0 + 1*2^1 + 1*2^2 = 7
だろうように、最大2つの権限を追加するだろうと思いましたか?ありがとう
これは本当に基本的な質問ですが、申し訳ありませんが正の面でマイナス1があるのはなぜですか?なぜJava 2の最大整数は^ 31 - 1で2ではなく^ 31
ゼロが保存されているかどうかは関係ありますか?私はバイナリのために可能な限り最高の進数を計算すると、ちょうど同じルールがJavaの整数に対して適用しないでください3ビット符号なしのために、それは
1*2^0 + 1*2^1 + 1*2^2 = 7
だろうように、最大2つの権限を追加するだろうと思いましたか?ありがとう
Javaは最大符号付き整数を0x7fffffff
(2^31-1)としてサポートできるため、
2^31 = 0x80000000 is negative so Positive is 2^31-1
バイナリレベルcomparasionは次のようになります
10000000000000000000000000000000 --> 2147483648 --> 2^31
01111111111111111111111111111111 --> 2147483647 --> 2^31 -1
^ Sign bit
ありがとうございます、これはかなり明確になります –
"Signed bit"は "Sign bit" – Roland
同じルールが適用されます... 7
は2^3 - 1
です。これとは対照的に0 :)
の、ネガは-(2^31)
に行くので、はい、それはそう2^31
負の数、1 0
、およびに追加2^31-1
厳格な陽性は、ありますです...
2^31 + 1 + 2^31 - 1 = 2 * 2^31 = 2^32
2^32を分割する必要があります。
1/2が負です。
0はプラスでカウントされます。
数学では、0も負でも正でもありません。
.NETとMSSQLでは一貫しています。
ネガを含まないセットに気づかれた場合は、符号なしと呼ばれます。
0が含まれていて、それを正と呼ぶのは適切ではありません。
バイナリワールドは0から始まるので、正の値として扱われます。
Jack(+1)の答えには理由があります。
0
から2^31-1
までの範囲の負の数である2^31
があります。だから、zero
も整数として格納されます。また、-2^31
から-1
までの2^31
の負の数があります。
nビットの場合は、2 ^(n-1)の負数(先頭ビットは1)と2 ^(n-1)の非負数があります。ゼロは負でない数値なので、最大でも2 ^(n-1)-1の正数があります。
注:そこので
-Integer.MIN_VALUE == Integer.MIN_VALUE
それが原因で(二ゼロを格納することを回避する)2の補数の利便性の最も負の数には正でなく、そのrapresentationを使用してJava格納番号。見てくださいhere。
のJava整数量を締結しているので、1ビットの値に対して31ビットを残して、サインのために予約されています。
[2の補数]のため(http://en.wikipedia.org/wiki/Two's_complement);関連する質問を参照してください:http://stackoverflow.com/questions/3809044/how-many-values-can-be-represented-with-9-bits/3809058#3809058 – NullUserException
神の母、初めてJavaタグに投稿し、このたくさんの反応があります、ありがとうございます! –