Lets assume that int is 1 byte.
int a = 10;
0 000 1010 = a in binary
When you apply NOT operator
It flips all the bits.
1 111 0101 is now equal to a.
Since you declared a as signed the first bit will be defining the sign, 0 for +; 1 for - sign.
And, since twos complement is used to represent negative numbers in binary we are going to be finding the number like this:
When the first bit is 1, meaning negative, think 1s as zero; 0s as one (except the first bit).
Then find the number and add 1.
Lets do it together:
1 111 0101 we will think 1s zero, zeros as 1. (First bit stays there)
1 000 1010, so this equals 10.
You add 1, then you get 11. Then you put negative sign. So you get -11.
Okay then lets take a look at it.
b = -10
1 000 0000 lets sculp this.
Since we will be adding 1 to the result we need to get 9 here how do we get 9 ?
2^3 + 2^0 = 1 000 1001 (we were thinking 1s as zero, 0s as one.)
So 1 111 0110 is the binary representation of -10.
So lets apply NOT operator.
0 000 1001.
What we get?