variable tipos sirve que programacion para ejemplos datos c# types int32

c# - tipos - ¿Por qué el valor máximo de Int32 es 0x7FFFFFFF?



tipos de datos en c# (6)

El primer bit es el signo: un int32 está firmado, es decir, puede ser positivo / negativo (¡bueno, probablemente no debería decir ''primero''!)

Vi en documentos de MSDN que el valor máximo de Int32 es 2,147,483,647 , hexadecimal 0x7FFFFFFF .
http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx

Creo que, si es Int32 , debería almacenar 32 bits de valor entero que finalmente debería ser 4,294,967,295 y hexadecimal 0xFFFFFFFF .

Mi pregunta es por qué Int32 almacena 31 bits de valor entero?




Int32 e Int64 están firmados para que puedan manejar valores enteros de -capacidad / 2 a (capacidad / 2) -1 (para cero) por lo que el valor máximo no es el que esperaba. Pero puede obtener lo que quiere utilizando una int sin signo para tener solo números positivos.


En el tipo n-bit con signo de complemento a 2, el rango es de -2 n-1 a 2 n-1 -1 porque con n bits puede representar 2 n valores diferentes, la mitad de los cuales se utilizan para los números con signo debido al signo poco. Los 2 n-1 restantes se usan para números no negativos. Dado que uno se usa para 0, solo hay 2 n-1 -1 valores restantes para números positivos


Es porque es un número entero con signo. Un entero sin signo de 32 bits le da el valor que espera.

Consulte esta página de MSDN: http://msdn.microsoft.com/en-us/library/exx3b86w(v=vs.80).aspx

Para una explicación más detallada de por qué esto es consultar el enlace en la respuesta de Jackson Papas relacionado con la representación del número de complemento de Two.

También algunas lecturas adicionales .