&:当两边操作数的位同时为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