JavaScript - 位元運算符
各位未來的編程大師,大家好!今天,我們將要一起深入探索JavaScript位元運算符的迷人世界。我知道你現在在想什麼:"位元運算什麼?" 不用擔心!在這堂課結束之前,你將會像專家一樣操縱位元。所以,讓我們一起踏上這個二進制的冒險之旅吧!
JavaScript 位元運算符
位元運算是JavaScript中特殊的工具,讓我們能在二進制層面上與數字一起工作。這意味著我們將會處理1和0,就像計算機內部所做的一樣。這可能聽起來有點令人卻步,但相信我,一旦你掌握了要領,其實非常有趣!
在我們進入具體內容之前,讓我們先來看一下我們將會介紹的所有位元運算符:
運算符 | 名稱 | 說明 |
---|---|---|
& | AND | 如果兩個位元都是1,則將每個位元設為1 |
| | OR | 如果兩個位元中的任意一個是1,則將每個位元設為1 |
^ | XOR | 如果只有兩個位元中的一個是1,則將每個位元設為1 |
~ | NOT | 翻轉所有位元 |
<< | 左移 | 向左移動,並從右側填入0 |
>> | 右移 | 向右移動,並從左側複製最左邊的位元 |
>>> | 零填充右移 | 向右移動,並從左側填入0 |
現在,讓我們一一來解析這些運算符!
JavaScript 位元AND (&) 運算符
位元AND運算符就像一個非常嚴格的俱樂部門衛。只有當兩個輸入都是1時,它才讓1通過。否則,就是0。讓我們看看它是如何工作的:
let a = 5; // 二進制為 0101
let b = 3; // 二進制為 0011
console.log(a & b); // 二進制為 0001,即十進制的 1
在這個例子中,我們正在比較5(0101)和3(0011)的每一位。只有在最右邊的位是1的情況下,這兩個數字中才會有1通過。結果是0001,即十進制的1。
JavaScript 位元OR (|) 運算符
位元OR運算符就像一個更為寬容的保鏢。如果任一輸入是1,它就讓它通過。讓我們看看它是如何工作的:
let a = 5; // 二進制為 0101
let b = 3; // 二進制為 0011
console.log(a | b); // 二進制為 0111,即十進制的 7
在這裡,我們得到1的位置是5或3中的任意一個有1的地方,結果是0111,即十進制的7。
JavaScript 位元XOR (^) 運算符
XOR運算符就像一個奇怪的派對遊戲,只有當你戴帽子或圍巾(但不能同時戴)時才讓你進入!它只在位元不同的情況下返回1。看看這個:
let a = 5; // 二進制為 0101
let b = 3; // 二進制為 0011
console.log(a ^ b); // 二進制為 0110,即十進制的 6
我們在位元不同的地方(從右數第二和第三位)得到1,結果是0110,即十進制的6。
JavaScript 位元NOT (~) 運算符
NOT運算符就像對立日一樣,它會翻轉所有的位元。但有一個陷阱!在JavaScript中,它還會反轉符號並減去1。讓我們看看:
let a = 5; // 二進制為 0101
console.log(~a); // 十進制的 -6
結果可能會讓你感到驚訝!這是因為JavaScript使用二進制的補碼來表示負數。所以~5實際上是-6。
位元左移 (<<) 運算符
左移運算符就像一個傳送帶,將位元向左移動,並在右側添加0。每次移動都會使數字翻倍:
let a = 5; // 二進制為 0101
console.log(a << 1); // 二進制為 1010,即十進制的 10
console.log(a << 2); // 二進制為 10100,即十進制的 20
看見了嗎?5經過一次移動變成了10,兩次移動變成了20?就像魔法一樣!
位元右移 (>>) 運算符
右移運算符則相反,將位元向右移動。它有效地將數字減半(向下取整):
let a = 5; // 二進制為 0101
console.log(a >> 1); // 二進制為 0010,即十進制的 2
5除以2是2.5,但我們向下取整到2。
位元右移並填充零 (>>>) 運算符
這個運算符與>>相似,但它總是從左側填充0,即使對負數也是如此:
let a = -5; // 二進制為 11111111111111111111111111111011 (32位)
console.log(a >>> 1); // 二進制為 01111111111111111111111111111101,即十進制的 2147483645
這個有點複雜!它主要用於當你需要將數字當作無符號數字處理時。
好了,各位!你們已經開始踏上了位元操作的旅程。這些運算符現在可能看起來有點抽象,但它們在處理二進制數據、創建散列函數或優化某些算法等任務中非常有用。
記住,熟能生巧。嘗試玩轉這些運算符,很快你就能像專家一樣輕鬆應對位元!快樂編程,願位元與你同在!
Credits: Image by storyset