que sé sobre int
y long
(números de 32 bits y 64 bits), pero lo que son uint
y ulong
?¿Cuál es la diferencia entre "int" y "uint"/"long" y "ulong"?
Respuesta
Los tipos de datos primitivos con el prefijo "u" son versiones sin firmar con los mismos tamaños de bits. Efectivamente, esto significa que no pueden almacenar números negativos, pero por otro lado pueden almacenar números positivos dos veces más grandes que sus contrapartes firmadas. Las contrapartes firmadas no tienen el prefijo "u".
Los límites para int (32 bits) son:
int: –2147483648 to 2147483647
uint: 0 to 4294967295
Y por mucho tiempo (64 bits):
long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
uint
y ulong
son las versiones sin signo de int
y long
. Eso significa que no pueden ser negativos. En cambio, tienen un valor máximo más grande.
Type Min Max CLS-compliant int -2,147,483,648 2,147,483,647 Yes uint 0 4,294,967,295 No long –9,223,372,036,854,775,808 9,223,372,036,854,775,807 Yes ulong 0 18,446,744,073,709,551,615 No
Para escribir un entero sin signo literal en su código fuente puede utilizar el sufijo u
o U
por ejemplo 123U
.
No debe usar uint y ulong en su interfaz pública si desea ser CLS-Compliant.
Lea la documentación para obtener más información:
Esto es interesante: ¿qué quiere decir con CLS? El enlace va a la documentación de MSDN para int. Si con "CLS" quiere decir especificaciones del lenguaje C#, entonces no entiendo: la especificación describe claramente uint y ulong (sección 1.3) –
@Isak Savo: enlace fijo, gracias por señalar el error. –
@Isak Savo: es importante cumplir con CLS si está escribiendo una interfaz que podría ser utilizada por otros lenguajes .NET que C#. –
La diferencia es que el uint
y ulong
son los tipos de datos sin signo, significado el rango es diferente: No aceptan valores negativos:
int range: -2,147,483,648 to 2,147,483,647
uint range: 0 to 4,294,967,295
long range: –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
ulong range: 0 to 18,446,744,073,709,551,615
u
significa unsigned
, por lo que ulong
es un número grande sin signo. Puede almacenar un valor mayor en ulong
que en long
, pero no se permiten números negativos.
A long
valor se almacena en 64 bits, con su primer dígito para mostrar si se trata de un número positivo/negativo. mientras que ulong
también es de 64 bits, con todos los 64 bits para almacenar el número. entonces el máximo de ulong es 2 (64) -1, mientras que largo es 2 (63) -1.
- 1. ¿Cuál es la diferencia entre 'int'? y 'int' en C#?
- 2. ¿Cuál es la diferencia entre int y NSInteger?
- 3. Diferencia entre int * i y int ** i
- 4. diferencia entre int * i y int * i
- 5. ¿Cuál es la diferencia entre int [] [] e int [,]?
- 6. ¿Cuál es la diferencia entre {0} y ""?
- 7. Cuál es la diferencia entre = y: =
- 8. ¿Cuál es la diferencia entre .ToString (+) y ""
- 9. Cuál es la diferencia entre $ (...) y `...`
- 10. ¿cuál es la diferencia entre:.! y: r !?
- 11. ¿Cuál es la diferencia entre ".equals" y "=="?
- 12. ¿Cuál es la diferencia entre dict() y {}?
- 13. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 14. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 15. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 16. ¿Cuál es la diferencia entre + = y = +?
- 17. ¿Cuál es la diferencia entre " " y ""?
- 18. Cuál es la diferencia entre $ y jQuery
- 19. ¿Cuál es la diferencia entre unsigned int y signed int en C?
- 20. Diferencia entre int, NSInteger y NSUInteger
- 21. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 22. C++ STL :: ¿cuál es la diferencia entre inplace_merge y sort
- 23. ¿Cuál es la diferencia entre EqualTo() y EquivalentTo() en NUnit?
- 24. ¿Cuál es la diferencia entre size_t e int en C++?
- 25. ¿Cuál es la diferencia entre declarar y definir una estructura?
- 26. ¿Cuál es la diferencia entre SynchronizationContext.Send y SynchronizationContext.Post?
- 27. ¿Cuál es la diferencia entre los métodos iterator y view?
- 28. ¿Cuál es la diferencia entre :: ::: y en Scala
- 29. ¿cuál es la diferencia entre DEFAULT_SIZE y PREFERRED_SIZE?
- 30. ¿Cuál es la diferencia entre NSInvocation y block?
Es muy divertido trabajar a mano. Una variable con signo de 32 bits usa 1 bit para el signo (positivo o negativo) así que puede almacenar valores entre -2^31 y + 2^31 - 1 –
al comparar int y uint para el uso, ¿cuál es factible? –
¿Cuál es el equivalente a C++? – darkgaze