Value of i for (i == -i && i != 0) to return true in Java -


i have following if condition.

if (i == -i && != 0) 

what value of i return true condition in java?

i unable think of such value of i considering two's complement notation in java.

i love have algebraic proof of whatever answer condition has (in context java)?

the int value works integer.min_value.

it's because integers negated using two's complement way.

using

system.out.println(integer.tobinarystring(integer.min_value)); 

you see integer.min_value is

10000000000000000000000000000000 

taking negative value done first swapping 0 , 1, gives

01111111111111111111111111111111 

and adding 1, gives

10000000000000000000000000000000 

as can see in link gave, wikipedia mentions problem negative numbers , specifies it's sole exception :

the negative number in two's complement called "the weird number," because exception.

of course have same phenomenon long.min_value if store in long variable.

note this due choices made regarding binary storage of ints in java. (bad) solution example have been negate changing significant bit , letting other bits unchanged, have avoided problem min_value have made 2 different 0 values , complicated binary arithmetic (how have incremented example ?).


Comments

Popular posts from this blog

html5 - What is breaking my page when printing? -

c# - must be a non-abstract type with a public parameterless constructor in redis -

ajax - PHP/JSON Login script (Twitter style) not setting sessions -