Warum ist Int32 die maximale Wert 0x7FFFFFFF?
Sah ich in der MSDN dokumentiert, dass die maximale Wert von Int32
ist 2,147,483,647
, hexadezimale 0x7FFFFFFF
.
Ich denke, wenn es Int32
es sollte speichern 32-bit-integer-Werte, schließlich sollte 4,294,967,295
- und hexadezimal -0xFFFFFFFF
.
Meine Frage ist, warum Int32
speichert 31-bit-integer-Werte?
- Möglich, Duplikat der Warum ist der maximale Wert eine vorzeichenlose n-bit-integer mit 2^n-1 und nicht 2^n?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist, weil es eine vorzeichenbehaftete Ganzzahl. Eine vorzeichenlose 32-bit-Ganzzahl geben Sie den Wert, den Sie erwarten.
Check-out dieser MSDN-Seite - http://msdn.microsoft.com/en-us/library/exx3b86w(v=vs. 80).aspx
Für eine genauere Erklärung, warum das so ist schauen Sie sich den link in Jackson Päpste Antwort bezieht sich auf Zwei-Komplement Zahlendarstellung.
Auch einige weiter Lesen.
int32
ist eine zweier-Kompliment-Nummer, also ist es nicht unbedingt fair zu sagen, dass das oberste bit ist ein Vorzeichenbit. Das wäre ein Kompliment-Nummer.Weil ein bit speichert das Vorzeichen (Int32 werden kann, weniger als null).
http://en.wikipedia.org/wiki/Two%27s_complement
Int32 und Int64 sind beide signiert, so dass Sie behandeln können integer-Werte von Kapazität/2 (Kapazität/2)-1 (für null), das ist der Grund, warum der max-Wert ist nicht die, die Sie erwartet. Aber Sie können bekommen, was Sie wollen, indem Sie ein unsigned int zu haben, nur positive zahlen.
Das erste bit ist das Vorzeichen - ein int32 ist signiert, d.h. es kann positiv/negativ (auch das sollte ich vielleicht nicht sagen 'erste' bit!)
Sind Sie nicht angesichts der negativen zahlen.
Int32
haben das Zeichen.Aus der MSDN: http://msdn.microsoft.com/en-us/library/system.int32.minvalue.aspx
Die
MinValue
ist-2,147,483,648
; das ist, hexadezimale0x80000000
.In einer 2 ' s Komplement vorzeichenbehaftete n-bit-Typ, der Bereich von -2n-1 2n-1-1, da mit n bits darstellen können 2n verschiedene Werte, von denen die Hälfte wird für vorzeichenbehaftete zahlen, weil das Vorzeichenbit. Die restlichen 2n-1 die Hälfte ist für nicht-negative Zahl ist. Da man gewohnt ist, für 0, - es gibt nur die 2n-1-1 verbleibenden Werte für positive zahlen