Eu sei sobre int
e long
(números de 32 e 64 bits), mas o que são uint
e ulong
?
Eu sei sobre int
e long
(números de 32 e 64 bits), mas o que são uint
e ulong
?
Respostas:
Os tipos de dados primitivos prefixados com "u" são versões não assinadas com os mesmos tamanhos de bits. Efetivamente, isso significa que eles não podem armazenar números negativos, mas, por outro lado, podem armazenar números positivos duas vezes maiores que seus equivalentes assinados. As contrapartes assinadas não têm o prefixo "u".
Os limites para int (32 bits) são:
int: –2147483648 to 2147483647
uint: 0 to 4294967295
E por muito tempo (64 bits):
long: -9223372036854775808 to 9223372036854775807
ulong: 0 to 18446744073709551615
uint
e ulong
são as versões não assinadas de int
e long
. Isso significa que eles não podem ser negativos. Em vez disso, eles têm um valor máximo maior.
Tipo Mín. Máx. Em conformidade com CLS int -2.147.483.648 2.147.483.647 Sim uint 0 4.294.967.295 Não long –9.223.372.036.854.775.808 9.223.372.036.854.775.807 Sim ulong 0 18.446.744.073.709.551.615 No
Para escrever um int literal sem sinal em seu código-fonte, você pode usar o sufixo u
ou, U
por exemplo 123U
.
Você não deve usar uint e ulong em sua interface pública se desejar ser compatível com CLS .
Leia a documentação para mais informações:
u
significa unsigned
, então ulong
é um grande número sem sinal. Você pode armazenar um valor maior em ulong
que long
, mas não são permitidos números negativos.
Um long
valor é armazenado em 64 bits, com seu primeiro dígito para mostrar se é um número positivo / negativo. enquanto ulong
também é de 64 bits, com todos de 64 bits para armazenar o número. portanto, o máximo de ulong é 2 (64) -1, enquanto long é 2 (63) -1.
A diferença é que uint
e ulong
são tipos de dados sem sinal, o que significa que o intervalo é diferente: Eles não aceitam 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