一、右移与左移
<<:左移
>>:带符号右移
>>>:无符号右移
public static void main(String[] args) {
//101=5 左移一位 1010=10
int left = 5;
System.out.println("输出left: " + left);
System.out.println("输出left二进制: " + Integer.toBinaryString(left)); //101
//左移:二进制位整体左移,然后低位补0;相当于乘2,101 -> 1010
System.out.println("输出left左移1位: " + Integer.toBinaryString(left << 1));
//1011=11 右移二位 0010=2
int right = 11; //1011
System.out.println("输出right: " + right); //11
System.out.println("输出right二进制: " + Integer.toBinaryString(right)); //1011
System.out.println("输出right无符号右移2位: " + Integer.toBinaryString(right >>> 2)); //0010=2 11/4=2
System.out.println("输出right有符号右移2位: " + Integer.toBinaryString(right >> 2)); //0010=2
}
二、异或
^:异或
public static void main(String[] args) {
/**
* ^异或操作: 口诀异1 两数相等取1,两数不等取0
* 1001
* 0101
* ========
* 1100
*/
System.out.println(Integer.toBinaryString(5)); //101
System.out.println(Integer.toBinaryString(9)); //1001
System.out.println(Integer.toBinaryString(5 ^ 9));
}