黑马程序员-位运算符

------- android培训java培训、期待与您交流! ----------



class Demo 
{
	public static void main(String[] args) 
	{
		//1.<<(左移)
		//左移一位,右侧补0,原最左侧的值丢弃
		//每左移一位,相当于原数 * 2
		//实际移动的位数 = 要移动的位数 % 32
		int  num = 1;
		System.out.println(num << 31); //int的最小值 1000 0000 0000 0000 0000 0000 0000 0000
		System.out.println(num << 32); //1,32 % 32 = 0,相当于没动
		
		//2.>>(带符号右移)
		//右移一位,左侧补原符号位,右侧丢弃
		//每右移一位,相当于原数 / 2
		System.out.println(-1 >> 10); //-1
		System.out.println(1 >> 1); //0
		//3.>>>(无符号右移)
		System.out.println(-1 >>> 1); //移动以后就变成了正数
		//取反~
		System.out.println(~1);		//-2
		System.out.println(~-1);		//0
		//上述操作符都是生成新的计算结果,对原值没有更改
	}
}

/*
	位运算符:
	1.&(按位与):对整数的二进制位进行操作:另外也可以对boolean进行操作:
					两位都为1,结果为1,其他结果为0
					1 & 2 :
					true & true :true
					1.当操作数为boolean值时,结果跟&&是一样的
					2.逻辑与(&&)具有短路行为,而按位与(&)不具有短路行为。
					
					短路:
					当确定整个表达式的结果时,将不再继续执行后边的表达式
	
	2.|(按位或):对整数的二进制位进行操作:另外也可以对boolean进行操作:
					两位有一位为1,结果为1.其他都为0
					1 | 2 : 0000 0001 | 0000 0010 : 0000 0011 -->3
	3.^(按位异或):两位相同,结果为0;两位不同,结果为1;
					1 ^ 2 :0000 0001 ^ 0000 0010 : 0000 0011 --> 3
*/
class Demo 
{
	public static void main(String[] args) 
	{
		System.out.println("1 & 2 = " + (1 & 2));
		System.out.println("1 & 3 = " + (1 & 3));
		System.out.println("true & true = " + (true & true));
		int age = 22;
		double height = 1.65;
		System.out.println(age >= 22 & height >= 1.60);
		System.out.println(true && false && ++age == 22);	//短路行为
		System.out.println(age);	//22
		System.out.println(true & false & ++age == 22);	//短路行为
		System.out.println(age);	//23
		int num1 = 10;
		int num2 = 20;
		
		//两个数异或其中一个数三次,对两个数进行换位
		num1 = num1 ^ num2;
		num2 = num1 ^ num2;
		num1 = num1 ^ num2;
		System.out.println(num1);
		System.out.println(num2);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值