Day05位运算符

位运算符

//位运算符:& ,|,^,<<,>>

//位运算,与二进制有关
          A=0011 1100
          B=0000 1101
        A&B=0000 1100   //按位与 (&),对于两个操作数的每一个对应位,如果两个位都是1,则结果位为1,否则为0
        A|B=0011 1101   //按位或 (|),对于两个操作数的每一个对应位,如果两个位中有任意一个为1,则结果位为1,否则为0。
        A^B=0011 0001   //按位异或 (^),对于两个操作数的每一个对应位,如果两个位不相同,则结果位为1,否则为0。
        ~B=1111 0010    //按位非 (~),单一操作数:对操作数的每一位进行取反,即0变为1,1变为0。

有趣的面试题:

​ 如何最快的计算2*8的结果?

System.out.println(2<<3);

//    <<:*2;
//    >>:/2
//2<<3:2*(2^3)

/*
式子解析
0000 0000:0
0000 0001:1
0000 0010:2  -------------
0000 0011:3
0000 0100:4   --------------
0000 0101:5
0000 0110:6---------------
0000 0111:7
0000 1000:8--------------
......
0001 0000:16------------
	二进制的1每向左移动一位,就相当于十进制的数乘二
	
	2<<3:二进制的1向左移动3位,相当于十进制的数连乘3个2,也就是2^3
	
	由于位运算符直接对二进制进行运算,所以运算最快

posted @ 2023-12-24 21:01  1hahahahahahahaha  阅读(4)  评论(0编辑  收藏  举报