Como vai amigo?
Se os tipos de valores "Ushort e etc" são valores sem sinais, é possível fazer operações matemáticas com eles, uma vez que os sinais podem estar com outros valores que aceitam sinais?
Muito obrigado e tenha bons estudos.
Como vai amigo?
Se os tipos de valores "Ushort e etc" são valores sem sinais, é possível fazer operações matemáticas com eles, uma vez que os sinais podem estar com outros valores que aceitam sinais?
Muito obrigado e tenha bons estudos.
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
Números inteiros
No .NET os números inteiros são definidos por 3 tipos que são: int, long e short.
Todos os 3 tipos acima descritos contam com os tipos unsigned que significa um tipo sem sinal. Então enquanto o int aceita valores negativos, o uint aceita apenas valores positivos. O mesmo acontece com o long, ulong, short e ushort. Em um exemplo mais prático, poderiamos atribuir um valor negativo a um destes tipos mas não para um unsigned, desta forma:
short saldo = 10; // OK
ushort saldoNegativo = -10; // ERROR
Acima vemos um valor sendo atribuido corretamente para a variável saldo na primeira linha como definido no comentário. já na segunda linha, ao tentar atribuir m valor negativo ao tipo unsigned temos o comentário indicando que é uma atribuição incorreta.
Os tipos unsigned ocupam o mesmo tamanho de memória que seus tipos padrões. Sendo assim o int e uint ocupam 32 bits, o short e ushort ocupam 16 bits de memória e o long e ulong ocupam 64 bits de memória.
Números reais
Em relação a números reais, ou popularmente ditos "números quebrados", o C# disponibiliza também 3 tipos, são eles o float que aloca 32 bits de memória, o double que aloca 64 bits e o decimal que aloca 128 bits de memória. Estes tipos não contam com os tipos unsigned e por padrão podem possuem assimilação a valores positivos e negativos.
Podemos tomar como exemplo de atribuição de um valor para cada um destes tipos o seguinte código:
double salarioA = 3.000;
float salarioB = 3.000f;
decimal salarioC = 3.000m;
Note que na declaração do valor do tipo double atribuimos o valor normalmente enquanto para declarar o float foi necessário adicionar a letra "f" ao fim do valor e no decimal a letra "m" também no fim da declaração do valor. Por padrão o C# reconhece um valor com ponto como sendo double e por este motivo precisamos adicionar a letra no fim da declaração ao atribuir valor aos outros tipos.
Todos os números em C# e .NET são tipos que iniciam com um valor 0.
Type | Size | Minimum Value | Maximum Value |
---|---|---|---|
sbyte | 8-bit (signed) | -128 | 127 |
byte | 8-bit (unsigned) | 0 | 255 |
short | 16-bit (signed) | -32768 | 32767 |
ushort | 16-bit (unsigned) | 0 | 65535 |
int | 32-bit (signed) | -2147483648 | 2147483647 |
uint | 32-bit (unsigned) | 0 | 4294967295 |
long | 64-bit (signed) | -9223372036854775808 | 9223372036854775807 |
ulong | 64-bit (unsigned) | 0 | 18446744073709551615 |
Alisson, boa noite.
Caso tenho de ajudado com as suas dúvidas, por favor finalizar o tópico como solucionado.
Bons estudos. Um abraço.
Eduardo
Alisson, boa noite.
Por favor finalizar o tópico como solucionado caso tenha te ajudado.
Um abraço. Bons estudos.
Eduardo
Alisson, bom dia.
Por favor finalizar o tópico como solucionado caso tenha te ajudado.
Um abraço. Bons estudos.
Eduardo
Alisson, boa noite.
Caso ainda tenha alguma dúvida registrar aqui.
Por favor finalizar o tópico como solucionado caso tenha te ajudado.
Um abraço. Bons estudos.
Eduardo