位运算分为 7种,它们是:

按位与

&

按位或

|

按位异或

^

按位取反

~

左移运算

<<

右移运算

>>

无符号右移运算

>>>

一.按位与
计算规则

按位与运算将参与运算的两数对应的二进制位进行与运算,当对应的二进制位均为 1 时,结果位为 1,否则结果位为 0。

二.按位或
计算规则

按位或运算将参与运算的两数对应的二进制位进行或运算,只要对应的二进制位中有 1,结果位为 1,否则结果位为 0。

三.按位异或
计算规则

按位异或运算将参与运算的两数对应的二进制位相异或,当对应的二进制位值不同时,结果位为 1,否则结果位为 0

四.按位取反
计算规则

按位取反运算将二进制数的每一个位上面的 0 换成 1,1 换成 0,包括符号位

五.左移运算
计算规则

左移运算将数对应的二进位都向左移动n位,高位丢弃,低位补 0.每移动一位相当于乘2

六.右移运算
计算规则

右移位运算,符号位不变,其余位均向右移动n位,低位溢出,溢出的高位用符号位补充

七,无符号右移
计算规则

无符号右移,二进制数中所有位均向右移动n位(包括符号位),高位补0

需要注意的是:这里用于计算的二进制数均为补码的存在.因为计算机中数字的存储和计算都是以补码的形式进行的

扩展
①位运算可以用于判断一个数的奇偶

public class Program {
    public static void main(String[] args) {
        System.out.println(isOddNumber(10));  //false
        System.out.println(isOddNumber(11));  //true
        System.out.println(isOddNumber(12));  //false
        System.out.println(isOddNumber(13));  //true
        System.out.println(isOddNumber(0));   //false			
 }
    
 /**
     * 判断一个数是不是奇数
     * @param num  需要判断的数字
     * @return 返回true,说明是奇数;返回false,说明是偶数
     */
    public static boolean isOddNumber(int num){
        if((num & 1) == 1){
            return true;
        }
        return false;
    }
}

按位与可以用于判断一个数是不是奇数,是因为奇数的二进制的最后一位一定是1,因此与其他数进行按位与运算之后,如果结果是1,就说明它是一个奇数

②用左移实现计算2 * 8 : 2 << 3

public class Program{
	public static void main(String[] args){
		System.out.println(2 << 3);  // 16
	}
}