邏輯運算 - 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 ^ 0
和1 ^ 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|(|運算後結果)