Java位运算包含移位>>、非~、与&、或|、异或^。
1.表示方法:
在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。
补码的表示需要满足如下要求:
(1)正数的最高位为0,其余各位代表数值本身(二进制数)。
(2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。
2.位运算符
- >>>和>>的区别是:在执行运算时,>>>运算符的操作数高位补0,而>>运算符的操作数高位移入原来高位的值。
- 右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。
- 若进行位逻辑运算的两个操作数的数据长度不相同,则返回值应该是数据长度较长的数据类型。
- 按位异或可以不使用临时变量完成两个值的交换,也可以使某个整型数的特定位的值翻转。
- 按位与运算可以用来屏蔽特定的位,也可以用来取某个数型数中某些特定的位。
- 按位或运算可以用来对某个整型数的特定位的值置1。
3.位运算符的优先级 ~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。
位与& 两个值,两个相应位都为1,则结果为1,否则为0;相同数字做&运算,会得到相同的数字。
位或| 两个值,两个相应位有1,则结果为1,否则为0
位异或^
参与运算的两个值,两个相应位相同,则结果为0,否则为1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0
例如:10100001^00010001=10110000
0^0=0,0^1=1 0异或任何数=任何数
1^0=1,1^1=0 1异或任何数-任何数取反
任何数异或自己=把自己置0
位非~ 取反
原创文章,作者:LeeC,如若转载,请注明出处:https://digoak.com/technology/java/03/java-%e4%bd%8d%e8%bf%90%e7%ae%97/