I have the following value:

```
int x = -51232;

```

Java integers are 32 bits, so in binary this should be the following:

```
10000000000000001100100000100000

```

The sign bit on the left is set to `1` since `x` is negative.

Then I do the operation

```
x = (x & Integer.MAX_VALUE);

```

`Integer.MAX_VALUE` is `2147483647` and in binary that would be:

```
01111111111111111111111111111111

```

0 on the left because the value is positive.

So why does `x & Integer.MAX_VALUE` yield `2147432416`? The `AND` operator should only retrieve bits that `x` and `Integer.MAX_VALUE` have in common, which should be equivalent to `-x` (since they do not share the same sign bit).

What's going on here?