您的位置:首页 > 编程语言 > Java开发

随堂笔记160228表达式

2016-02-28 21:13 309 查看
本节课的内容主要是对上一节的表达式内容做补充

表达式:

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 ? "不及格":"及格";

6.关于表达式中的边界值:边界值设定错误造成BUG。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  教学 java java se