Bruno Laturner:
Não funciona assim Giulliano. Subtrair 1 de Integer.MIN_VALUE dá Integer.MAX_VALUE. Aí entra as propriedades de overflow.
E o problema não é matemático, ele é pegadinha de linguagem de programação.
Java não tem um int positivo equivalente a Integer.MIN_VALUE, pois eles vão de 2^31 a 2^31 -1. Acontece a mesma coisa com Long.MIN_VALUE.
Calma, calma,… relamente é uma pegadinha da lingugem, mas todos os Integer têm um int equivalente.
Além disso o problema não é a subtração. É a simetria. A operação (-x ) não é uma subtração.
Integer.MIN_VALUE = Integer.MAX_VALUE + 1, sim, portanto, Integer.MAX_VALUE + 1 seria tb uma resposta válida.
Mas em relação ha simetria , lembrem-se que java tem mais negativos que positivos , pois um dos positivos é o zero.
Portanto, MAX_VALUE tem um simétrico , mas MIV_Value não tem porque não ha mais elementos do outro lado do zero. A solução é ele ser simétrico de si mesmo.
O problema em questão é responder à pergunta “Qual é o inteiro que é simétrico de si mesmo, e não é o zero ?”
Matematicamente este numero não existe e dai vem o paradoxo.