MSDNドキュメントで Int32
の最大値は2,147,483,647
である 、16進数0x7FFFFFFF
であることを確認しました。
Int32
の場合、最終的に4,294,967,295
と16進数0xFFFFFFFF
になる32ビット整数値を格納する必要があると思います。
私の質問は、Int32
が31ビット整数値を保存する理由です。
それは符号付き整数だからです。符号なし32ビット整数は、期待する値を提供します。
このMSDNページを確認してください- http://msdn.Microsoft.com/en-us/library/exx3b86w(v = vs.80).aspx
なぜこれがジャクソン・ポープスの2つの補数表現に関連する回答のリンクをチェックアウトするのかについての詳細な説明については、.
また、いくつかの さらに読む 。
符号を格納するために1ビットが使用されるため(Int32は0未満になる場合があります)。
Int32とInt64は両方とも符号付きなので、-capacity/2から(capacity/2)-1(ゼロの場合)までの整数値を処理できるため、最大値は期待したものではありません。しかし、正の数のみを持つように符号なし整数を使用すると、必要なものを取得できます。
あなたは負の数を考慮していません。 Int32
サインがあります。
MSDNから: http://msdn.Microsoft.com/en-us/library/system.int32.minvalue.aspxMinValue
は-2,147,483,648
;つまり、16進数の0x80000000
。
最初のビットは符号です-int32は符号付きです。つまり、正/負になります(おそらく「最初の」ビットと言ってはいけません!)
2の補数の符号付きnビット型では、範囲は-2からn-1 2へn-1-1 nビットで2を表現できるためn 異なる値。その半分は符号ビットのために符号付き数値に使用されます。残りの2n-1 halfは、負でない数に使用されます。 1つは0に使用されるため、2つしかありませんn-1-1残りの正数の値