java提供的位运算符
- 一元操作符:位非:
~。 - 二元操作符:左移:
<<; 右移:>>; 无符号右移:>>>(左移没有符号的问题); 位与:&; 位或:|; 位异或:^。
位非:~
例如: ~5结果为-6, 首先5将被转换为2进制数,然后按位取反,结果转换为原数据类型。
左移:<<
相当于乘以2,例如:5<<2表示将5的二进制数左移两位,低位补0,结果为20。
右操作数根据数据类型需要进行模32(int)或模64(long)的运算,即 1<<35等于1<<3。
右移:>>
相当于除以2,左移反过来,高位补原本符号位的数,即0000 1111右移两位为0000 0011, 1111 0000右移两位为1111 1100。
右操作数根据数据类型需要进行模32(int)或模64(long)的运算,即 1>>35等于1>>3。
无符号右移
高位补0。
位与:& / 位或:| / 位异或:^
一样的,先转为二进制,然后按位取与/或/异或。
&和|在boolean值的应用
&和|也可以用于boolean的运算,但是不同于&&和||,&和|不采用“短路”的方式来求值,即两个操作数都会进行计算。例如:1 == 2 || 2 == 2在计算第一个表达式为false后不会继续计算第二个表达式,而1 ==2 | 2 == 2会计算两个表达式的值。
一些应用
可以看https://my.oschina.net/xianggao/blog/412967,列举了很多常用的应用。


被折叠的 条评论
为什么被折叠?



