[第四週] JavaScript —
關於位元運算子,首先要了解二進位

Miahsu
Miahsu
Mar 26 · 5 min read

進位制

日常生活中使用的進位制為「十進位」。

十進位(oct)

不會有 10 的出現,因為碰到 10 就要進位。

1,2,3,4,5,6,7,8,9,10,11,12 (進位所以後方補 0)

八進位(dec)

不會有 8 的出現,因為碰到 8 就要進位。

1,2,4,5,6,7,10,11,12,13,…17,20,21 (進位所以後方補 0)

十六進位(hex)

不會有 16 的出現,因為碰到 16 就要進位,但會遇到一個問題,數字到 9 就沒了,這樣一定會進位的呀!因此過 9 後就使用英文字母表示。

1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15), 10, 11, 12,…, 19, 1A, 1B, …1F, 20

所以 …

二進位(Binary)

不會有 2 的出現,因為碰到 2 就要進位

1, 10, 11, 100, 101, 111, 1000…

二進位的單一個位數(digit)即是電腦的最基本單位「位元」。


進位轉換

十進位(oct)八進位(dec)轉換

「196」你會怎麼解釋這串數字?

  • 以十進位(oct)解釋
1*100 + 9*10 + 6*1 = 196

將轉成「平方」表示

1*10² + 9*10¹ + 6*10⁰ = 196

所以我們平常都是用十進位來解釋一串數字(已經習以為常,都沒有發現)

  • 以八進位(dec)解釋
196(oct)

所以 196 轉成八進位(dec)的數字為 142

那將十進位(oct)轉換成二進位(Binary)應該是這樣子吧

196(oct)

咁那怪怪,二進位應該除了 1 跟 0 以外,不會有其他數字!!

所以這樣是不對的。

十進位(oct)二進位(Binary)轉換

先來看看二進位 ➡️ 十進位

1010(Binary)

反推回十進位 ➡️ 轉二進位

10(oct)

所以十進位要使用 2 的次方相加來推算

先來背個 2 的次方

2⁰ = 1  

所以 196 轉換二進位(Binary)

196(oct)

以上就是進位制的介紹與轉換。


JavaScript 位元運算符

位元運算符就是按照二進位制來做運算。

>> 、 << 位元位移

位移的意思是,往左或往右移動

  • 十進位制是怎麼位移的呢?
123 往左移一個位元得 1230,就等於 乘以 10¹
  • 同理二進位制
110 往左移一個位元得 1110 就等於 乘以 2¹

所以往右移?就等於 除於 2¹、除於 2²

>> 位元右移

  • n >> i
  • n 除以 2 的 i 次方
  • 無法整除,餘數會無條件捨去
  • 舉例
n >> 1: n 除以 2 的 1 次方

<< 位元左移

  • n << i
  • 乘以 2 的 i 次方
  • 舉例
n >> 1: n 乘以 2 的 1 次方

JavaScript 邏輯位元運算符

| &^ 將數值轉換成二進位的並針對每個位數進行位元運算, return 一個數字。
#⚠️別跟一般邏輯運算符搞混了。

| 位元 OR

  • 舉例
13 | 14

& 位元 and

  • 舉例
13 & 14

^ 位元只有在兩邊相同時回傳 0

13 ^ 14

實際上在 JavaScript 運用到位元運算子的機率非常低,不過還是有的

例如:可以拿來做奇數偶數的判斷。

  • % 判斷
let question = prompt("輸入一個數字","0");
  • & 判斷
let question = prompt("輸入一個數字","0");
Miahsu

Written by

Miahsu

每件事都是最好的安排,成為更好的自己

More From Medium

Also tagged JavaScript

Also tagged JavaScript

Also tagged JavaScript

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade