Criar int não assinado em Java

Rashmi Patidar 12 outubro 2023
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 Patidar avatar Rashmi Patidar avatar

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

Artigo relacionado - Java Integer