本节课的内容主要是对上一节的表达式内容做补充
--------
001(1)
现在如何不使用第三个变量来交换他们两个的值呢?
00000010(2)
-----------
11111101(-3的补码)
现在根据补码来源可以得到源码=补码-1取反;
11111101(-3补码)
- 0000001
-----------------
~ 11111100(取反,最高位符号位不参与运算)
-----------------
10000011(-3的源码)
int a = 1,c;
c = a >> 1;
System.out.println(c); //输出c为0;
score < 60 ? "不及格":"及格";
表达式:
1.异或(^):两个数异或运算,相同位得0,不同位为1
ex: 110(6)
111(7)--------
001(1)
异或可以用于两个数的交换,举个例子:
int a = 10,b = 20;
现在如何不使用第三个变量来交换他们两个的值呢?
第一步,首先将两个数进行异或运算并赋值给a
a(10) 00001010
b(20) ^00010100
--------------------------
00011110
a = a ^ b;
第二步,将得到的答案与b异或运算,就得到b
b(20) 00010100
a ^00011110
------------------------
00001010(得到10)
b = b ^ a;
第三步,将b与a异或
b(10) 00001010
a ^00011110
--------------------------
00010100(得到20)
a = a ^ b;
2.负数在计算机内以补码的形式存放。
1.补码:源码取反+1。
ex:-3的补码(由2的源码取反得到)00000010(2)
-----------
11111101(-3的补码)
现在根据补码来源可以得到源码=补码-1取反;
11111101(-3补码)
- 0000001
-----------------
~ 11111100(取反,最高位符号位不参与运算)
-----------------
10000011(-3的源码)
3.位移运算(<< >>):
ex:int a = 1,c;
c = a >> 1;
System.out.println(c); //输出c为0;
4.表达式中的优先级用括号来体现。
5.三目运算符:条件?真:假;
ex: int score = 60;score < 60 ? "不及格":"及格";