方法一:
public static void main(String[] args) {
int a = 2;
int b = -a;
System.out.println(b);
}
方法二:
public static void main(String[] args) {
int a = 2;
int b = (~a + 1);
System.out.println(b);
}
(~a + 1)表示对a取反+1
a的二进制数为:00000000000000000000000000000010
取反:11111111111111111111111111111101
+1: 11111111111111111111111111111110 转化为十进制数为-2
任何正数取反都有负数对应,但是任何负数取反不一定有正数对应
例如:
这是因为
系统最小整数a 的二进制表达形式为:10000000000000000000000000000000
取反后:01111111111111111111111111111111
+1:10000000000000000000000000000000
取反+1后与原来的数字相同。