经典案例:
1.高效的方式计算 2* 8 ?
回答:2 << 3 或者 8<<1 (2左移3位) 或(8左移1位)
左移1位:将数值扩大2倍
右移1位:将数值缩小2倍
2.交换两个int型变量的值,String类型的变量呢?
/** * @author 喜羊羊 * @date 2024/1/31 15:36 */ public class BitExer { //交换两个int型变量的值,String类型的变量呢? public static void main(String[] args) { int m = 10 ; int n = 20 ; System.out.println("m的值" + m +",n的值" + n); //方式一:声明一个临时变量 int x = 0 ; x= m ; m = n; n = x; //方式二:优点:不需要定义临时变量 缺点:难,适用性差(不适用于非数值类型)、可能超出int范围 m = m + n ; n = m-n; m = m-n; //方式三:位运算---异或 优点:不需要定义临时变量 缺点:难,适用性差(不适用于非数值类型) m = m ^ n; n = m ^ n;//(m^n)^n == m m = m ^ n; System.out.println("m的值" + m +",n的值" + n); } }