JavaSE基础语法—位运算

it2022-05-05  79

位运算

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); */ } }

转载于:https://www.cnblogs.com/cqzy/p/11200398.html


最新回复(0)