# 位元運算 ## 位元運算的 and、or、xor 與 not - 位元運算與常用的邏輯運算是完全不同的東西 - 邏輯運算是一般寫程式常用的`||`和`&&`判斷式 - 位元運算則是電路板的and 、or、xor、not,在JavaScript則是`&`、`|`、`^`、`~` ### and 用 `&` 表示 - 當不同時,必定是0 - 只有1→1才會是1 ### or 用 `|` 表示 - 只有0→0才會是0,否則其他恆為1 ### xor 用 ` ^ ` 表示 - 兩個都是相同時回傳0,否則回傳1 ### not 用` ~ ` 表示 - 直接將輸入的值反轉,1→0 0→1 - 原來not除了1→0以及0→1之外,在二進制面前還會有個代表正負號的bit,又根據二的補數定理,本來15的01111會變成10000,而這個最前端代表負數,所以是-16 - 再換個方式提~11,11的二進制為01011,~11=10100=-16+4=-12 ### 可以利用位元運算的特性去做條件~ 例如說可以用來判斷基數偶數,要先知道二進位的數,最後一位只要是 0 就是偶數,1 就是基數 1000 ⇒ 8 1001 ⇒ 9 所以任意數和 1 用 and 比較時,偶數會輸出 0,基數會輸出 1 1000 & 1 = 0 1001 & 1 = 1