2020-12-09(补充) 位运算符

本文深入讲解了位运算符的基本概念及应用,包括左移、右移等操作,并通过实例演示了如何利用位运算进行变量交换,同时提供了几种不同的变量交换方法。

/* 位运算符(了解)

结论:

  1. 位运算符操作的都是整型的数据
  2. <<:在一定范围内,每向左移动1位,相当于*2;
    >>:在一定范围内,每向右移动1位,相当于/2

面试题:

最高效的计算 2 * 8? A: 2 << 3 或者 8 << 1

对于位运算符,从底层二进制去看原理。

&两端是用逻辑运算符还是位运算符要看符号两边的情况。
如果是boolean:逻辑。数字:位。

*/
class BitTest {
		public static void main(String[] args) {
		int i = -21;
		System.out.println("i << 2 :" + (i << 2));
		System.out.println("i << 3 :" + (i << 3));
		System.out.println("i << 27 :" + (i << 27));

		int m = 12;
		int n = 5;
		System.out.println("m & n = " + ( m & n));
		System.out.println("m | n = " + ( m | n));
		System.out.println("m ^ n = " + ( m ^ n));//拆开看二进制

		// 练习:交换两个变量的值
		int num1 = 10;
		int num2 = 20;
		System.out.println("num1 = " + num1 + ", num2 = " + num2);
                                                                                     
		//plan 1: 定义临时变量(推荐)
		//int temp = num1;
		//num1 = num2;
		//num2 = temp;
		//System.out.println("num1 = " + num1 + ", num2 = " + num2);

		//plan 2: 来回定义。好处:不用再定义临时变量。
		//但是存在弊端:有可能会超出变量存储范围+存在局限性(受类型的限制),只能适用于数值类型
	
		num1 = num1 + num2;
		num2 = num1 - num2;
		num1 = num1 - num2;
		System.out.println("num1 = " + num1 + ", num2 = " + num2);

		//plan 3:使用位运算符,可以把k=num1^num2,k和谁异或得到另一个数
		num1 = num1 ^ num2;
		num2 = num1 ^ num2;
		num1 = num1 ^ num2;
		System.out.println("num1 = " + num1 + ", num2 = " + num2);

	}
}

明天把运算符全部看完!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值