初歩的な質問で申し訳ありませんが、なぜプラス側にマイナスがあるのですか?
ゼロが保存されていることと関係がありますか?バイナリの可能な限り高い 10 進数を計算するには、2 の累乗を足すだけだと思っていました。3 ビットの符号なしの場合は、
1*2^0 + 1*2^1 + 1*2^2 = 7
同じ規則が Java 整数に適用されるべきではありませんか? ありがとう
0x7fffffff
Javaは 2^31-1の max signed int をサポートできるためです。
2^31 = 0x80000000 is negative so Positive is 2^31-1
バイナリ レベルの比較は次のようになります。
10000000000000000000000000000000 --> 2147483648 --> 2^31
01111111111111111111111111111111 --> 2147483647 --> 2^31 -1
^ Sign bit
同じルールが適用されます...7
です2^3 - 1
。はい、それは 0 のためです。:)
対照的に、ネガは-(2^31)
したがって2^31
、負の数、 one 0
、および2^31-1
厳密な正数があり、これらを合計すると...
2^31 + 1 + 2^31 - 1 = 2 * 2^31 = 2^32
これは、 2 の補数(ゼロが 2 つ格納されるのを回避する)の利便性のためであり、Java はその表現を使用して数値を格納します。ここを見てください。
からまで2^31
の負でない数値があります。はい、整数としても格納されます。また、 から までの範囲の負の数があります。0
2^31-1
zero
2^31
-2^31
-1
2^32 に分割する必要があります。
1/2 はマイナスです。
0 はプラスでカウントします。
数学では、0 は負でも正でもありません。
.NET と MSSQL で一貫しています。
ネガを含まないセットは unsigned と呼ばれます。
0 を含んでおり、正と呼ぶのは適切ではありません。
バイナリの世界は 0 から始まるため、正の値として扱われます。
ジャック(+1)からの答えには理由があります。
n ビットがある場合、2^(n-1) の負の数 (最上位ビットが 1 であるため) と 2^(n-1) の非負の数があります。ゼロは負でない数であるため、最大でもある 2^(n-1)-1 までの正の数があります。
注: 最も負の数に正はありませんので、
-Integer.MIN_VALUE == Integer.MIN_VALUE
Java 整数は符号付きの量であるため、符号用に 1 ビットが予約され、値用に 31 ビットが残されます。