24

MSDNのドキュメントで、の最大値Int322,147,483,64716進数であることがわかり0x7FFFFFFFました。

もしそうなら、最終的には16進数Int32であるはずの32ビット整数値を格納する必要があると思います。4,294,967,2950xFFFFFFFF

私の質問は、なぜInt3231ビット整数値を格納するのですか?

4

6 に答える 6

36

符号付き整数だからです。符号なし32ビット整数は、期待する値を提供します。

このMSDNページを確認してください-http://msdn.microsoft.com/en-us/library/exx3b86w(v= vs.80 ).aspx

これがなぜであるかについてのより詳細な説明については、2の補数の表現に関連するジャクソン教皇の回答のリンクをチェックしてください。

また、いくつかのさらなる読書

于 2012-11-05T10:21:33.747 に答える
9

符号を格納するために1ビットが使用されるため(Int32はゼロ未満になる可能性があります)。

http://en.wikipedia.org/wiki/Two%27s_complement

于 2012-11-05T10:21:34.370 に答える
7

Int32 と Int64 は両方とも署名されているため、-capacity/2 から (capacity/2)-1 (ゼロの場合) までの整数値を処理できます。これが、最大値が期待した値ではない理由です。ただし、 unsigned int を使用して正の数のみを使用することで、必要なものを取得できます。

于 2012-11-05T11:56:18.770 に答える
5

あなたは負の数を考慮していません。 Int32サインを持っています。

MSDNから: http ://msdn.microsoft.com/en-us/library/system.int32.minvalue.aspxMinValueです-2,147,483,648; つまり、16進数0x80000000です。

于 2012-11-05T10:21:41.297 に答える
5

最初のビットは符号です。int32は符号付きです。つまり、正/負の場合があります(おそらく、「最初の」ビットと言うべきではありません!)

于 2012-11-05T10:21:42.533 に答える