操作运算符的简记

1)"^":按位异或:将整型数据转换成二进制后再取两个数的异或值。
2)"~":按位取反:将整型数据转换成二进制后再取反。

举个例子:int i = 5;int j = 10;System.out.println(i + ~j);//输出-6

解释:
1)根据公式:-n=~n+1可推出~n=-n-1,所以~10=-11再加5结果为-6
2)使用源码补码反码知识:原码才可以对应为正常的整数,补码只有转换为原码才能被正常人类识别(计算机本身存储的是补码)
计算机本身存储的是补码:10的补码就是10的原码(正数的三种都一样):10的补码:0000000000001010
~10的补码就是:1111111111110101
~10的反码就是:1111111111110100(补码减一)
~10的原码就是:1000000000001011(反码取反,最前一位是符号位)


3)"l":按位或(区分一下逻辑或ll)
"|"和"||"的区别就在于:(a|b)无论|前面是否为false,后面的都执行;而(a||b)如果a表达式为true的话,后面的就不执行了。所谓的短路功能(检测false)也是这个意思:具备短路功能的,会先检测前面,成立(为false)再检测后面。不具备短路功能的话就会检查每一个条件。
4)"&":按位且(区分一下逻辑且&&)
"&"和"&&"的区别就在于:(a&b)无论&前面是否为true,后面的都执行;而(a&&b)如果a表达式为false的话,后面的就不执行了。所谓的短路功能(检测true)也是这个意思:具备短路功能的,会先检测前面,成立(为true)再检测后面。不具备短路功能的话就会检查每一个条件。
3)左移<<:补0,相当于乘以2
4)右移>>:补符号位,相当于除以2
5)无符号右移>>>:补0
6)%取余操作,只适用于整型

7

原文地址:https://www.cnblogs.com/yangrongkuan/p/12023238.html