Criar int não assinado em Java
Inteiros com sinal são armazenados no banco de dados em uma faixa de valores positivos e negativos, de -1
a -128
. Oposto a isso, os inteiros sem sinal mantêm o grande conjunto de valores de faixa positivos apenas, nenhum valor negativo, de 0
a 255
. Isso significa que inteiros sem sinal nunca podem armazenar valores negativos.
Em Java, o conjunto de tipos de dados não inclui nenhum int
não assinado explicitamente. No entanto, com base no caso de uso, outros tipos de dados podem ser tratados como inteiros sem sinal. Java fornece um tipo de dados long
para armazenar valores não assinados maiores.
O tipo de dados long
tem um tamanho de 64 bits e funciona internamente em complemento de dois. Em Java 8 e versões superiores, o tipo de dados long
pode armazenar valores que variam de 0
a 2^64-1
. Ele fornece mais intervalo de dados em comparação com o tipo de dados int
simples.
Abaixo está o bloco de código para definir o tamanho e a diferença entre os dois tipos de dados.
public class Main {
public static void main(String[] args) {
System.out.println("Size of int: " + Integer.SIZE + "bits");
System.out.println("Size of int: " + Long.SIZE + "bits");
int signedInt = -2345678;
long unsignedValue = signedInt & 0xffffffffL;
System.out.println(signedInt);
System.out.println(unsignedValue);
}
}
No bloco de código acima, as duas primeiras instruções imprimem o tamanho das classes Integer
e Long
. Um inteiro é um tipo de dados primitivo para conter valores int
.
O tamanho de int
imprime até 32 bytes e o da classe de wrapper Long
imprime 64 bytes. As classes possuem variáveis estáticas e finais definidas que representam o tamanho da classe wrapper.
Ao lado da instrução print, duas variáveis locais ou de classe são definidas. A variável é dos tipos de dados int
e long
. O valor instanciado em um inteiro é negativo, pois contém valores negativos e positivos.
Em uma variável longa
, o inteiro com sinal é operado com o operador Bitwise &
. Ele funciona no complemento de dois de um número convertido em formato binário. Então, internamente, ele primeiro converte o valor negativo na forma binária. Entre os dois valores binários, ele executa operações lógicas &
sobre os dois valores. O operador acabará por converter o valor negativo em um número positivo.
A saída das duas linhas do programa acima é mostrada abaixo.
Size of int: 32bits
Size of int: 64bits
-2345678
4292621618
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn