------- android培训、java培训、期待与您交流! ----------
class Demo
{
public static void main(String[] args)
{
//1.<<(左移)
//左移一位,右侧补0,原最左侧的值丢弃
//每左移一位,相当于原数 * 2
//实际移动的位数 = 要移动的位数 % 32
int num = 1;
System.out.println(num << 31); //int的最小值 1000 0000 0000 0000 0000 0000 0000 0000
System.out.println(num << 32); //1,32 % 32 = 0,相当于没动
//2.>>(带符号右移)
//右移一位,左侧补原符号位,右侧丢弃
//每右移一位,相当于原数 / 2
System.out.println(-1 >> 10); //-1
System.out.println(1 >> 1); //0
//3.>>>(无符号右移)
System.out.println(-1 >>> 1); //移动以后就变成了正数
//取反~
System.out.println(~1); //-2
System.out.println(~-1); //0
//上述操作符都是生成新的计算结果,对原值没有更改
}
}
/*
位运算符:
1.&(按位与):对整数的二进制位进行操作:另外也可以对boolean进行操作:
两位都为1,结果为1,其他结果为0
1 & 2 :
true & true :true
1.当操作数为boolean值时,结果跟&&是一样的
2.逻辑与(&&)具有短路行为,而按位与(&)不具有短路行为。
短路:
当确定整个表达式的结果时,将不再继续执行后边的表达式
2.|(按位或):对整数的二进制位进行操作:另外也可以对boolean进行操作:
两位有一位为1,结果为1.其他都为0
1 | 2 : 0000 0001 | 0000 0010 : 0000 0011 -->3
3.^(按位异或):两位相同,结果为0;两位不同,结果为1;
1 ^ 2 :0000 0001 ^ 0000 0010 : 0000 0011 --> 3
*/
class Demo
{
public static void main(String[] args)
{
System.out.println("1 & 2 = " + (1 & 2));
System.out.println("1 & 3 = " + (1 & 3));
System.out.println("true & true = " + (true & true));
int age = 22;
double height = 1.65;
System.out.println(age >= 22 & height >= 1.60);
System.out.println(true && false && ++age == 22); //短路行为
System.out.println(age); //22
System.out.println(true & false & ++age == 22); //短路行为
System.out.println(age); //23
int num1 = 10;
int num2 = 20;
//两个数异或其中一个数三次,对两个数进行换位
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
System.out.println(num1);
System.out.println(num2);
}
}