---
# System prepended metadata

title: JavaScript 邏輯運算

---

# 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，印出）
```




