Некромантия здесь.Очевидно, x *= -1;
слишком просто.Вместо этого мы могли бы использовать тривиальное двоичное дополнение:
number = ~(number - 1) ;
Примерно так:
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int iPositive = 15;
int iNegative = ( ~(iPositive - 1) ) ; // Use extra brackets when using as C preprocessor directive ! ! !...
System.out.println(iNegative);
iPositive = ~(iNegative - 1) ;
System.out.println(iPositive);
iNegative = 0;
iPositive = ~(iNegative - 1);
System.out.println(iPositive);
}
}
Таким образом, мы можем гарантировать, что посредственные программисты не понимают, что происходит;)