随堂笔记160228表达式

来源:互联网 发布:hadoop 数据抓取 编辑:程序博客网 时间:2024/06/04 18:57
本节课的内容主要是对上一节的表达式内容做补充




表达式:

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。

0 0
原创粉丝点击