~表示按位取反
通俗点讲,比如:
正数:
int a = 10;
System.out.println(~a);//-11
//0000 0000 0000 0000 0000 0000 0000 1010 写出10的二进制
//1111 1111 1111 1111 1111 1111 1111 0101 取反之后,最高位是1,说明是负数,需要对其取反在加一(符号位不变)
//1000 0000 0000 0000 0000 0000 0000 1011 取反加一之后得出-11
负数:
int a = -4;
System.out.println(~a);//3
//负数的过程可以仿照正数,可以自己推算
由此可以得出结论:无论正负都有 ~a = -a - 1