# 邏輯運算子與位元運算子 <div class="block"> **本篇會談到** - 邏輯運算子 (Logical Operators) - 位元運算子(bitwise operators) </div> ## ✐ 邏輯運算子 (Logical Operators) :::info 用來做<font color="red">**布林值 (boolean) 的運算**</font>,運算結果傳回 **true** 或 **false**。 ::: :::success **在真假判斷式中,所有東西都可以轉換為布林值,而除了 null, false, 0,-0, NaN, '空字串' 和 undefined 是 false,其他的值都是 true。** ::: <br> --- ### ➤ <span class="bg-b">&&</span> and - 若有 <font color="red">**任何一個條件為 false</font>,即會回傳 false** ```javascript= 978 && 0 // 回傳0 //&&要兩個都是 true,才會是 true ,但 0 是 false,所以就回傳了 0 。 ``` ```javascript= false && 521 // 回傳false //第一個就是false,就回傳第一個 false ``` - 需要**所有的條件為 true,才會回傳 true** ```javascript= 543 && 666 // 666 //第一個是 true ,第二個也是 true,回傳第二個 ``` <br> :::info && 和 || 特別的地方: 如果運算元的值不是布林值,實際上會傳回其中一個運算元的值 ::: ### ➤ <span class="bg-b">||</span> or - **<font color="red">任何一個條件為 true</font>,即會回傳 true** ,反之,**所有的條件都為 false,即會回傳 false** <br> :::info && 和 || 特別的地方: 如果運算元的值不是布林值,實際上會傳回其中一個運算元的值 ::: - 只要有個 true ,**整個就會是 true,所以回傳第一個東西** ```javascript= 3 || 10 // 回傳 3 ``` - **flase 回傳後面的值** ```javascript= 0 || false // 回傳false // //兩個都是 false,他傳了後面的 false。 ``` - **兩個都是 false,回傳後面的 false** ```javascript= 0 || false >false //兩個都是 false,他傳了後面的 false。 ``` ### ➤ <span class="bg-b">!</span> not - 不是的意思,不是對就是錯,不是錯就是對 ```javascript= !true // false ``` ```javascript= !false // true ``` ## ✐ 位元運算子(bitwise operators) ### 位移運算 `<<` 左移 與 `>>` 右移 位元就是針對每一個 bit 做操作,而不是對整體去做運算 :::info 使用 `<<` 或 `>>` 會比 `乘以2` 或 `除以2`,效能上來的更好 ::: #### 回顧二進位的算法 ```javascript= 0010 = 2^1 = 2 // 1 在第二個,2 的一次方 0101 = 2^2 + 2^0 = 5 // 1 在第三個和第一個 // 2 的二次方+ 2 的 0次方 ``` #### 位元左移 `<<` - 範例:左移一位(可看成 2的幾次方) ```javascript= 10 << 1 // 10 *2 // 位元左移一位 10 << 3 // 80 // 10 x 2^3 ``` #### 位元右移 `>>` - 同理,右移一位(可看成 除 2 的幾次方) ```javascript= 80 >> 3 // 10 1024 >> 10 // 1 ``` - 多餘的值不會出現 ```javascript= 9 >> 2 // 2 // 9/2^2 = 9除以4 = 2餘1 ``` ###### tags: `JS` {%hackmd @unayojanni/H1Qq0uKkK %}
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up