Java:8-移位运算符的概念

移位运算符的概念

移位运算符------------------------------
<<左移运算符,用于将数据的二进制位向左移动,右边使用0补充
>>右移运算符,用于将数据的二进制位向右移动,左边使用符号位补充
>>>表示逻辑右移运算符(无符号右移运算符),用于将数据的二进制位向右移动,左边使用0补充
/*

编程实现移位运算符的使用

*/
public class _16{
	
	public static void main(String[] args){
		
		//声明一个byte类型的变量并初始化
		byte b1 = 13;
		
		
		
		//打印变量的数值
		System.out.println(" b1 = " + b1); //b1 = 13
		
		System.out.println("--------------------------------------------------------------------");
		//移位运算符的使用
		//13的二进制是:0000 1101=>左移 0001 1010=>十进制 26
		//byte b2 = b1 << 1; 错误:不兼容的类型:从int转换到byte可能会有损失  自动提升为32位二进制 
		byte b2 = (byte)(b1 << 1);
		System.out.println("b2 = " + b2); //26
		System.out.println(b1 << 1); //26 左移1位相当于当前整数的数值*2
		System.out.println(b1 << 2); //52 左移2位相当于当前整数的数值*4
		
		System.out.println("--------------------------------------------------------------------");
		//13的二进制是:0000 1101=>右移 0000 0110=>十进制 6
		System.out.println(b1 >> 1); //6 右移1位相当于当前整数的数值/2
		System.out.println(b1 >> 2); //3 右移2位相当于当前整数的数值/4
		
		System.out.println("--------------------------------------------------------------------");
		//逻辑右移 对于非负数来说,逻辑右移和右移的效果一致
		System.out.println(b1 >>> 1); //3
		//逻辑右移 对于负数来说,逻辑右移将会改变符号
		byte b3 = -1;  
		System.out.println(b3 >>> 1); 
		
		
	}
	
	
	
}
位运算符------------------------------
&表示按位与运算符,按照二进制位进行与运算,同1为1,单0为0
|表示按位或运算符,按照二进制位进行或运算,单1为1,同0为0
~表示按位取反运算符,按照二进制位进行取反,1为0,0为1
^表示按位异或运算符,按照二进制位进行异或运算,同为0,不同为1
/*

编程实现位运算符的使用

*/
public class _17{
	
	public static void main(String[] args){
		
		//声明两个byte类型的变量并初始化
		byte b1 = 11;
		byte b2 = 13;
		//打印变量的数值
		System.out.println("b1 = " + b1); //b1 =11
		System.out.println("b2 = " + b2); //b2 =13
		
		System.out.println("--------------------------------------------------------------------");
		//实现位运算符的使用
		//b1的二进制:0000 1011
		//b2的二进制:0000 1101
		System.out.println(b1 & b2); //按位与:同1为1,单0为0  0000 1001 =>十进制9
		System.out.println(b1 | b2); //按位或:单1为1,同0为0  0000 1111 =>十进制15
		System.out.println(b1 ^ b2); //按位异或:同为0,不同为1  0000 0110 =>十进制6
		System.out.println(~ b1); //按位取反:1为0,0为1  1111 0100 =>十进制-12
		
		
	}
	
	
	
}
运算符的优先级------------------------------
优先级就是优先计算的级别(越上面,那么优先级越大)

在这里插入图片描述

结合性只是代表操作方向是哪里,比如=,他是从右到左的结合性,那么如果说x=y=z=0,也就是都是0,首先是z=0,先处理,然后处理y=z,以此类推,这就是结合性的意思,即代表改符号是从哪个方向开始处理的
()优先级极高
=优先级极低
若无法确认优先级,则使用()来确保即可,并非一定需要背下优先级,因为我们只需要使用()即可,且他可能随着jdk版本的变化而改变,所以只需要了解即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值