这里主要用到有符号数补码的互补对称原则;
Java中有符号数以补码的形式存储,以4位二进制为例展示补码编码规则;
如上图,以-3(1101)为例,取反(0010)+1可得到正3的值;
所以数字补码的互补对称原则为 -n = ~n+1 ;
(该规则要去除最小数据,由图可知1000取反+1会又转会该最小数据1000);
所以处理类似问题,套入互补对称公式即可;
System.out.println(~100+1); //-100 (n就是100,-100=~100+1)
//其它变型
System.out.println(~100); //-101 (n是100, ~n=-n-1, -100-1=~100)
System.out.println(~-100); //99 (n就是-100, ~n=-n-1, -(-100)-1)