public class NewClass {
public void 位运算符(){
/*
* 1 ~ 按位取反 1=~0
* 2 & 按位与 0&1=0 1&1=1 0&0=0
* 3 | 按位或 0|1=1 1|1=1 0|0=0
* 4 ^ 按位异或 0^1=1 1^1=0 0^0=0 1^0=1 相同得0,相异得1
*/
int x=53;
int r=~x;
System.out.println("r="+r); //-54,按位取反加一
int y=22; // 10110
System.out.println("x&y="+(x&y)); //20
System.out.println("x|y="+(x|y)); //55
System.out.println("x^y="+(x^y)); //35
/*
* 移位运算符
* << 算数左移运算符 每向左移动一位,右边用0补齐,左边多出的位数丢掉
* >> 算数右移运算符 每向右移动一位,左边用0补齐,右边多出的位数丢掉
* >>>逻辑右移运算符
*/
System.out.println("4<<2="+(4<<2)); // 0000 0100(4)左移两位为0001 0000(16)
System.out.println("4<<3="+(4<<3)); //32
System.out.println("12>>2="+(12>>2)); //0000 1100(12)右移两位为0000 0011(3)
System.out.println("-12>>2="+(-12>>2)); //-3
System.out.println("12>>>2="+(12>>>2));
System.out.println("-12>>>2="+(-12>>>2));
/*
*位运算优先级别: ~ << >> >>> & ^
*/
}
public void priorityOfBitOperator(){
int a=-67,b=116,c=78;
//a=10111101,b=01110100,c=01001110
int d=~a|b&c;
int e=~c>>2&(a|~b);
int f=a^b&c;
System.out.println("d="+d);
System.out.println("e="+e);
System.out.println("f"+f);
}
public void 赋值运算符(){
//普通赋值运算符
byte b=123;
int i=b;
int a=222;
int j=i+a;
//扩展赋值运算符
// += -= *= /= %= &= |= ^= >>= <<= >>>=
i+=1; // i=i+1 124
i+=100; // i=i+100 224
i-=10; // i=i-10 214
i*=2; // i=i*2 428
System.out.println("i="+i); //428
}
public void 条件运算符(int 成绩){
//三目运算符
//逻辑表达式?表达式1:表达式2
//int 成绩=0;
String result;
result=成绩>=60?"通过":"没有通过";
System.out.println("成绩:"+result);
}
public static void main(String[] args){
NewClass oe=new NewClass();
oe.位运算符();
oe.priorityOfBitOperator(); //oe.调用方法
oe.赋值运算符();
oe.条件运算符(80);
}
}