Javaでは、int型の変数は、内部的に32ビットの符号付き整数として表されます。1つのビットが符号を格納し、他の31ビットが基数2の数値の大きさを格納するとします。このスキームでは、タイプとして格納できる最大値は
int
どれですか。
答えは(2^31)-1
です。目的は何-1
ですか?なぜ1
数の大きさから引く必要があるのですか?1
32番目のビットの目的であるため、記号とは何の関係もないと思います。
あなたはを忘れてい0
ます。
10進法では、1桁の数字を使用して10
値を格納でき、最大値は9
(10^1 - 1
)です。
これは同じ話です。i
ベースに数字を使用すると、値b
を格納できb^i
、最大のものはb^i-1
(現在、符号ビットを無視しています)です。
補足として:Javaで数値によって使用される表現(他の多くの実装と同様)は、2の補数であり、0だけを格納するという特性があります(そうでない場合は、2の補数になります0
:-0
そして+0
最初のビットによると記号)。したがって、最大値が2^31-1
、であっても、最小値はです-2^31
。
2の補数表記について学ぶ必要があります。すべてのJava整数型は符号付きであり、すべてこれを使用して整数を表します。引く必要がないので、とてもいいです。