# JavaScript 邏輯運算 ## 數學運算 - `+ 加 4 + 3 > 7` - `- 減 5 - 2 > 3` - `* 乘 3 * 7 > 21` - `/ 除 10 / 2 > 5` - `% 餘數 7 % 3 > 1` ## 位移運算子 >>(右移) 與 (左移)<< 0100 vs 1000 //以二進位來看 0100 = 2^2 = 4 1000 = 2^3 = 8 也就是說如果把 0100 往左移一位的話就會變成 1000 = 2^3 = 8 ,也就是 *2 的意思;反之往右移一位就會變成 0010 = 2^1 = 2,也就是 /2 的意思。 於是就可以知道: > > 10 << 1 (10 往左移一位 = 10*2^1) 20 > 10 << 5 (10 往左移五位 = 10*2^5) 320 > 13 >> 1 (13 往右移一位 = 13/2^1) 6 > 57 >> 3 (57 往右移三位 = 57/2^3) 7 如果右移無法整除的話,則會無條件捨去取整數。 看不懂的話請看圖 ![圖片](https://v61265.github.io/myBlog/static/b7039310bdb39c3fb3e3bae18b5dbafc/7d769/table.png) ## 邏輯運算 or `||`, and `&&`, not `!` ### `//`是(或 & or)的意思 ``` > true || true true (其中一個是true就是true) > true || false true > false || true true > false || false false ``` ### `&& `是(和 & and)的意思 ``` > true && true true //(兩個都是true就是true) > true && false false > false && true false > false && false false ``` ### `!` (非 & not)的意思 ``` !true false !false true ``` ``` > ! 882 false > ! 0 true ``` ### `||` 和 `&&` 數字 至於如果把 true, false 換成數字也會用一樣的邏輯印出答案。 ``` 3 || 123 3(先看 3 發現是 true,直接印出來) 0 || 123 123(看 0 是 false,再往下看 123 是 true,印出) 11 && 0 0(11 是 true,往下看 0 是 false,印出) 0 && 11 0(看到 0 是 false,直接印出) 123 && 1 1(看到 123 是 true,再往下看 1 也是 true,印出) ```