Waarom heeft het int32-type een maximale waarde van 2³¹ − 1?

Mogelijk duplicaat:
Wat is “2’s Complement”?

Ik weet dat int32 een lengte heeft van 32 bits (4 bytes). Ik neem aan dat het 2³² waarden heeft, maar aangezien de helft daarvan onder nul moet zijn, denk ik dat het hier iets mee te maken heeft.
Ik zou graag willen weten waarom int32 precies max. positief getal 2³¹ − 1.


Antwoord 1, autoriteit 100%

Deze meest significante bit wordt gebruikt om het teken te coderen (1 betekent negatief), dus er zijn slechts 31 bits beschikbaar voor de werkelijke waarde.

Int32.MaxValue =  2^31 - 1 = 01111111111111111111111111111111
                  1        = 00000000000000000000000000000001
                  0        = 00000000000000000000000000000000
                 -1        = 11111111111111111111111111111111
Int32.MinValue = -2^31     = 10000000000000000000000000000000

Antwoord 2, autoriteit 61%

2³² mogelijke waarden

− 2³¹-waarden gebruikt voor negatieve gehele getallen

− 1 waarde gebruikt voor nul

= 2³¹ − 1 waarden beschikbaar voor positieve gehele getallen


Antwoord 3, autoriteit 47%

2³² is ongeveer 4,2 miljard. Dit is het maximale aantal WAARDEN dat een binair getal met 32 cijfers (een 32-bits getal) kan vertegenwoordigen.

Die waarden kunnen alle waarden in elk bereik zijn. In een NIET-ONDERTEKEND 32-bits getal zijn de geldige waarden van 0 tot 2³² − 1 (in plaats van 1 tot 2³², maar hetzelfde aantal WAARDEN, ongeveer 4,2 miljard).

In een ONDERTEKEND 32-bits getal wordt een van de 32 bits gebruikt om aan te geven of het getal negatief is of niet. Dit vermindert het aantal waarden met een factor 2¹, of met de helft. Dit laat 2³¹ over, wat ongeveer 2,1 miljard is. Dit betekent dat het bereik nu ongeveer − 2,1 miljard tot 2,1 miljard is. Hetzelfde aantal waarden, ander bereik.


Antwoord 4

Je hebt 2^31 waarden onder nul (minimumwaarde = -2^31), 2^31-1 waarden boven nul en nul zelf. Dat maakt 2^31 + 2^31-1 + 1 = 2*2^31 = 2^32 waarden 🙂 …

De andere verklaring heeft betrekking op de manier waarop negatieve getallen worden weergegeven (met behulp van het twee-complement): Kortom, het meest significante bit geeft een negatief getal aan, dus je hebt nog 2^31 positieve getallen (inclusief nul), wat resulteert in ons het bereik 0..2^31-1

Other episodes