位运算符
-
&(与)运算符:都为1则为1,否则为0
-
|(或)运算符:都为0则为0,否则为1
-
^(异或)运算符:相同为0,不同为1
-
~(非)运算符:1变0,0变1
存在A = 0011 1100,B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
例子:
public class Demo {
public static void main(String[] args) {
int a = 245; //奇数
int b = 264; //偶数
System.out.println(isEven(a)); false
System.out.println(isEven(b)); true
}
//Even (adv)即使;甚至
// (adj)平滑的;平的;平坦的;(数量、速度等)变化不大的;均匀的;平稳的;相等的;均等的;偶数的
//判断一个数是否为偶数
public static boolean isEven(int i){
//逻辑:使用 & (与)运算符
//1的二进制为:0000 ... 0001
//无论该数有多大,和1进行与运算,后面位均为0。
//若为奇数,第一位为1,即十进制为1;若为偶数,第一位为0,即十进制为0
return (i & 1) == 0;
}
}
-
<<(左移)运算符:将二进制数向左移(数值变大,移动n位就*n个2)
-
>>(右移)运算符:将二进制数向右移(数值变小,移动n位就/n个2)
例子:
public class Demo {
public static void main(String[] args) {
int a = 3;//0011
int b = a << 2;//将a向左移动两位:1100
System.out.println(b); 12
b = b >> 3;//将a向右移动三位:0001
System.out.println(b); 1
}
}
三元运算符
? : 运算符:x ? y : z表示如果x==true,则结果为y,否则为z
例子:
public class Demo {
public static void main(String[] args) {
//score < 60 ? "不及格" : "及格"
//若(score < 60) == true,则输出"不及格",否则输出"及格"
int score = 80;
System.out.println(score < 60 ? "不及格" : "及格"); 及格
score = 59;
System.out.println(score < 60 ? "不及格" : "及格"); 不及格
}
}