隨堂筆記160228表達式

本節課的內容主要是對上一節的表達式內容做補充




表達式:

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章