位运算符
用途:
可以用在证书类型和Char类型的数据上
1、按位取反:把正操作数据变量为负,把负操作数变正再减一
简便算法:10进制下:这个数的相反数
2、按位与:对左操作数中的某些位进行置0操作,两个操作数都是1,结果才是1,
3、按位或:对左操作数中的某些位进行置1操作,两个操作数有一个是1,结果才是1,右操作数的其他位为0
4、按位异或:一个操作数异或另一个操作数两次,结果还是此操作数abb=>a
5、复合状态(位域)和某一状态值按位与,如果结果还是此状态值,则复合状态总包含此状态,如果结果为0,则表示复合状态中不包含此状态
public class AnOperator {
public static void main(String[] args) {
// 单目
int a =10;
System.out.println(~a);//-11
a = -11;
System.out.println(~a);//10
System.out.println("………………………………………………………………………………");
//按位与
int X=42;//二进制为:0010 1010
int Y=15;//二进制为:0000 1111
//思路
// 00101010
// & 00001111
//----------------
// 00001010
System.out.println(X&Y); //10
System.out.println("………………………………………………………………………………");
//按位或
//思路
// 00101010
// | 00001111
//----------------
// 00101111
System.out.println(X|Y); //47
System.out.println("………………………………………………………………………………");
//按位异或
//思路
// 00101010
// ^ 00001111
//----------------
// 00100101
System.out.println(X^Y); //37
System.out.println(X^Y^Y); //42
System.out.println(Y^X^X); //15
final int B =0b00000001;//1
final int I =0b00000010;//2
final int U =0b00000100;//4
int textStyle =B;
textStyle=textStyle|I;//00000011
System.out.println(textStyle);
textStyle=textStyle|U;//00000111
System.out.println(textStyle);
textStyle=textStyle&(~I);//00000101
System.out.println(textStyle);
//复合状态(位域)
System.out.println((textStyle&B)==B);
System.out.println((textStyle&I)==I);