JavaSE基础语法—位运算

位运算

public class Test02{
	public static void main(String[] args){
		/**
			位运算:& | ^ << >> >>>
			
			byte b1 = 27;//0001,1011
			byte b2 = 39;//0010,0111
						 //0000,0011		 
			//同位比较,两者为1,则为1	
			System.out.println(b1 & b2);//3 - 0000,0000,0000,0000,0000,0000,0000,0011
		
			byte b1 = 27;//0001,1011
			byte b2 = 39;//0010,0111
						 //0011,1111
						 
			//同位比较,两者有1,则为1	
			System.out.println(b1 | b2);//63 - 0000,0000,0000,0000,0000,0000,0011,1111
		
			byte b1 = 27;//0001,1011
			byte b2 = 39;//0010,0111
						 //0011,1100
						 
			//同位比较,两者不同,则为1	
			System.out.println(b1 ^ b2);//60 - 0000,0000,0000,0000,0000,0000,0011,1100
		
			& | ^ :
				前后两侧为boolean,此符号为逻辑运算符
				前后两侧为整数,此符号为位运算符
					
			<< 左移:整体向左移动n位,就用n个0补位
				byte b = 27;//0001,1011
				System.out.println(b << 2);//108 -- 0110,1100
				
			>> 右移:整体向右移动n位,就用n个最高位补位
				byte b = -27;//1110,0101
						 //1111,1001
				System.out.println(b >> 2);//-7 -- 1111,1001
				
			>>> 无符号位右移:整体向右移动n位,就用n个0补位
				byte b = -27;//1110,0101
							 //0011,1111,1111,1111,1111,1111,1111,1001
				System.out.println(b >>> 2);//1073741817
				
			面试题一:
				//-1 int(32位):1111,1111,1111,1111,1111,1111,1111,1111
				//	 byte(8位):1111,1111
				//	 char(16位):1111,1111,1111,1111
				//	 int(32位):0000,0000,0000,0000,1111,1111,1111,1111
				System.out.println((int)(char)(byte)-1);
				
			面试题二:采用最有效率的方式计算4乘以4
				//0001,0000
				System.out.println(2<<3);
			
		*/
			
		
			
				
	}
}
posted @ 2019-07-17 13:15  键盘敲坏  阅读(99)  评论(0编辑  收藏  举报