What means ~uint256(0)?

In a line like this:

```
constant MAX = ~uint256(0);
```

What means ~uint256(0)?

In a line like this:

```
constant MAX = ~uint256(0);
```

`~`

is the “bitwize-not” operator.

In this example, it takes the `uint256(0)`

, so 256 times the 0 bits (ie `0x0000000000000000000000000000000000000000000000000000000000000000`

), and applies not the them. The result is thus 256 times the 1 bits, (ie `0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`

)

And what is it purpose? Why do we need to do this?

```
uint256 private constant MAX = ~uint256(0);
uint256 private _tTotal = 1000000000 * 10**18;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
```

It’s an easy way to get the maximum number.

I see many contracts in older compiler versions were using `uint(-1)`

. It is invalid now. Is it producing the same number with `~uint(0)`

?

Yes it’s the same number.

For what is this number necessary?

Reflection Total not must be equal of tTotal?