JAVA 位运算符
原创
©著作权归作者所有:来自51CTO博客作者wx638ee25dac6f7的原创作品,请联系作者获取转载授权,否则将追究法律责任
&:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000
| :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
~:0变1,1变0
^:两边的位不同时,结果为1,否则为0.如1100^1010=0110
& 运算符
public static void main(String[] args)
{
int moveOperatorOne = 15;
int moveOperatorTwo = 11;
int convertedValue;
convertedValue = moveOperatorOne & moveOperatorTwo;
System.out.println(convertedValue);
}
输出结果:11
结果解释: moveOperatorOne的二进制是1111,moveOperatorTwo的二进制是1011,所以convertedValue是1011,即:11
| 运算符
public static void main(String[] args)
{
int moveOperatorOne = 15;
int moveOperatorTwo = 11;
int convertedValue;
convertedValue = moveOperatorOne | moveOperatorTwo;
System.out.println(convertedValue);
}
输出结果:11
结果解释: moveOperatorOne的二进制是1111,moveOperatorTwo的二进制是1011,所以convertedValue是1111,即:15
~ 运算符
public static void main(String[] args)
{
int moveOperatorOne = 15;
//int moveOperatorTwo = 11;
int convertedValue;
//convertedValue = moveOperatorOne | moveOperatorTwo;
convertedValue = ~ moveOperatorOne;
System.out.println(convertedValue);
}
输出结果:-16
结果解释:moveOperatorOne的二进制是00000000 00000000 00000000 00001111,取~后就是:11111111 11111111 11111111 11110000,这个数减1的结果是11111111 11111111 11101111,取反码是:00000000 00000000 00010000 是 16, 所以11111111 11111111 11111111 11110000的值就是-16. (注:负数的二进制存储是其绝对二进制的反码的补码)
^ 运算符
public static void main(String[] args)
{
int moveOperatorOne = 15;
int moveOperatorTwo = 11;
int convertedValue;
convertedValue = moveOperatorOne ^ moveOperatorTwo;
System.out.println(convertedValue);
}
结果: 4
解释结果: moveOperatorOne 二进制为1111,moveOperatorTwo 二进制为1011,取^后就是0100,也就是4