Integer.MAX_VALUE and Integer.MIN_VALUE

You should know that variable values are cyclic in Java.

public class Test{
  public static void main(String args[]){
     System.out.println(Integer.MAX_VALUE);
     System.out.println(Integer.MIN_VALUE);
     int x = Integer.MAX_VALUE + 1;
     System.out.println(x);
  }
}

This produces:

2147483647
-2147483648
-2147483648

7 thoughts on “Integer.MAX_VALUE and Integer.MIN_VALUE

  1. Na verdade, não é que os valores de variáveis de java são cíclicos, é uma coisa de arquitetura, de máquina mesmo os 31bits foram usados por completos, mas o assembler incrementa de qualquer jeito, então o valor vai para o bit 32, mas sabe-se que isso torna um número negativo, segundo a codificação complemento de 2. Em C/C++ acontece a mesma coisa. “Programando” em assembler, é possível ver isso, facilmente. Não sei se existe alguma linguagem que faz esse tipo de tratamento, mas as que eu vi até hoje, esse “erro” acontece simplesmente porque não tem a ver com elas, mas sim com a capacidade da máquina e a arquitetura.

  2. @Onilton Maciel,
    mais ou menos, eu encaro esse comportamento cíclico como uma convenção.
    Por exemplo em Ruby se eu pegar uma variável to typo Fixint e ir incrementando incrementando, ela vai chegar um momento que ela se tornará um Bignum. A conversão é feita automaticamente. Acho que Python também se comportaria assim. Legal, né?

  3. http://en.wikipedia.org/wiki/Computer_numbering_formats#Numbers_in_programming_languages
    Concordo com você, mas eu vejo assim, a diferença é que C/C++, Java e algumas outras linguagens não dão tratamento nenhum, por isso o comportamento cíclico acontece, por causa da forma que o número é pensado, complemento de 2. Eles (Java/C) não convencionaram nada, apenas por preguiça (hehe ou tradição, característica do nível da linguagem mesmo, ou sei lá), não aplicaram tratamento nenhum.
    http://en.wikipedia.org/wiki/Computer_numbering_formats#Two.27s_complement

    Em linguagens com um nível mais alto, como python, ruby, como você falou, esse tratamento é feito, e nesse caso há convenções! ;)

    Mas, mudando de assunto, você tem o solaris na sua máquina?
    Eu não consegui baixar uma iso, elas têm 1.2GB!!!! Eu só queria fazer um teste….
    Sabe se o comando od funciona em um diretório vazio? E o que ele retorna?

  4. @Onilton, tenho um Solaris Express Developer Edition (que é uma distribuição do OpenSolaris) instalada em minha máquina.
    Em que estado você mora? Você pode pedir um Starter Kit que é enviado para sua casa.

  5. Amazonas :P…. Vai demorar muito para chegar… Eu acho que vou tentar baixar mesmo… Era só uma pergunta, para ver se eu evitava o trabalho de baixar o SO… que é muito grande.

Leave a Reply

Your email address will not be published. Required fields are marked *