Confusing with bitwise NOT operator

Hi!

I don't know whether anyone pay attention with bitwise logical NOT operator, but I am confusing with this.

For example, I want to use NOT operator with an integer variable which has value 1, this means (let me take 8 bits instead of 4 bytes) :

and

If we run a program for this problem, we get -2 which is not equal to **1111 1110** at all

The thing that I know is that after 1 is converted to 1's complement, the result is converted back to 2's complement and keep the MSB bit unchanged as the sign bit, that's how we get -2. But why is it like that? Does this have any thing related to performance purpose or it's the rule of representing binary number in form of machine code? :(

Thanks and pardon my ignorance about the very basic thing!