[Week2] - JavaScript :邏輯 & 位元運算子


Posted by Kayla on 2020-12-31

邏輯運算 - and/or/not

1. || : or
左右有一方符合,從第一個開始判斷,若是為 true,就不在看後面是否符合

3 | | 10  //3
false | | 10 // 10

2. && : and
左右兩邊必須皆符合
第一個值若不符,則直接回傳第一個值,不做後面判斷

3 && 10  //10。需判斷兩邊才成立,因此會回傳最後 10  
false && 3  //false。第一個就判斷結果為false,於是判斷第二個也會無法符合兩邊都成立的標準  
300 && 13  //300

3. !:not
Note: 在 JavaScript 代表為 false:0、空字串、no、false、NaN、undefined


位移運算 - >><<

二進位: 由 0 和 1 組成的

//二進位表示法拆解還原
0100 = 2^2 = 4  
1000 = 2^3 = 8
//改成成二進位表示方式
27 = 16 (2^4)+8(2^3)+2(2^1)+1(2^0) = 11011 //為 27 的二進位為 11011

位移運算: 右移>>、左移<<
往右移一位代表 /2,往左移一位代表 *2

// 1. `<<` 左移一位,代表 *2
0100 = 2^2 =4 //1 << 左移後,變為 1000,空一個補 0
1000 = 2^3 =8

10 << 1 // 20。移一位 10*2=20  
10 << 3 // 80。移三位 10*(2^3)= 80
9 >> 1 // 4。有餘數捨去
13 >> 1 // 6。有餘數捨去

位元運算: and, or , not, xor
針對二進位的每個位數進行運算。

  • &:and
10 & 15 //10。位元運算
|A|1|0|1|0|(2^3+2^1=10)
|B|1|1|1|1|(2^3+2^2+2^1+2^0=15)
-----------(每個位元做 & 比較)
| |1|0|1|0|(& 運算後結果)

10 && 15 //15。邏輯運算,兩個皆是true,回傳最後一個
  • |:or
    10 | 15 //15。位元運算
    |A|1|0|1|0|(2^3+2^1=10)
    |B|1|1|1|1|(2^3+2^2+2^1+2^0=15)
    -----------(每個位元做 | 比較)
    | |1|1|1|1|(|運算後結果)
    10 || 15 //10。邏輯運算,第一個為true,回傳第一個值
    
  • ^:xor 0 ^ 01 ^ 1兩邊相同才會回傳 0。
    Note:Javascript 中 ^ 不是平方的意思
    |A|1|0|1|0|(2^3+2^1=10)
    |B|1|1|1|1|(2^3+2^2+2^1+2^0=15)
    -----------(每個位元做 | 比較)
    | |0|1|0|1|(|運算後結果)
    

#javascript







Related Posts

Playing with CSS Variables and JS

Playing with CSS Variables and JS

GitHub note

GitHub note

[TensorFlow Certification Day2] 課程規劃與安排時間

[TensorFlow Certification Day2] 課程規劃與安排時間


Comments