JavaScript 位运算符

JavaScript 位运算符

operator sunan ta hanyar dama
& AND idannan bayan bayan suna 1 daga kai tsaye, kuma kara waje na kai suna 1.
| OR idannan bayan bayan suna 1 ko 1, kuma kara waje na kai suna 1.
^ XOR idannan bayan bayan suna 1 da ke kai tsaye, kuma kara waje na kai suna 1.
~ NOT ta hanyar dama daga waje zuwa waje.
<< ta hanyar dama kuduwa daga waje zuwa kai da kara waje na kai na kai. ta hanyar dama kuduwa daga waje zuwa kai, kuma kara waje na kai na kai.
>> ta hanyar dama kuduwa daga kanan zuwa waje da kara waje na kiyashin yankin na kanan. ta hanyar dama kuduwa daga kanan zuwa waje ta hanyar dama kiyashin yankin na kai tsaye daga kai tsaye zuwa waje, kuma kara waje na kiyashin yankin na kanan.
>>> ta hanyar dama kuduwa daga kanan zuwa waje da kara waje na kiyashin yankin na kanan. ta hanyar dama kuduwa daga kanan zuwa waje, kuma kara waje na kiyashin yankin na kanan.

实例

Na'warin Nantaliyar 等同于 Nantaliyar
5 & 1 1 0101 & 0001 0001
5 | 1 5 0101 | 0001 0101
5 ^ 1 4 0101 ^ 0001 0100
~ 5 10 ~0101 1010
5 << 1 10 0101 << 1 1010
5 >> 1 2 0101 >> 1 0010
5 >>> 1 2 0101 >>> 1 0010

JavaScript 使用 32 位按位运算数

JavaScript 将数字存储为 64 位浮点数,但所有按位运算都以 32 位二进制数执行。

在执行位运算之前,JavaScript 将数字转换为 32 位有符号整数。

Idan na'warin na'warin na'warin na'warin suna 64 na'warin JavaScript na'warin.

Na'warin bakar fada suna 4 na'warin na'warin suna 1. So ~ 5 hana'warin 10.

Idan JavaScript na'warin 32 na'warin duniya na'warin suna 1, JavaScript hana'warin -6.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

Na'warin duniya na'warin suna 1 na'warin suna 1

Na'warin na'warin AND

Idan na'warin duniya suna 1 kuma na'warin na'warin AND suna 1.

Na'warin bakar:

Na'warin Nantaliyar
0 & 0 0
0 & 1 0
1 & 0 0
1 & 1 1

Na'warin bakar fada:

Na'warin Nantaliyar
1111 & 0000 0000
1111 & 0001 0001
1111 & 0010 0010
1111 & 0100 0100

Na'warin na'warin OR

Idan na'warin duniya suna 1 kuma na'warin na'warin OR suna 1 idan na'warin na'warin suna 1:

Na'warin bakar

Na'warin Nantaliyar
0 | 0 0
0 | 1 1
1 | 0 1
1 | 1 1

Na'warin bakar fada:

Na'warin Nantaliyar
1111 | 0000 1111
1111 | 0001 1111
1111 | 0010 1111
1111 | 0100 1111

Na'warin na'warin XOR

Idan na'warin duniya suna 1 kuma na'warin na'warin XOR suna 1 idan na'warin na'warin suna 1:

Na'warin bakar:

Na'warin Nantaliyar
0 ^ 0 0
0 ^ 1 1
1 ^ 0 1
1 ^ 1 0

Na'warin bakar fada:

Na'warin Nantaliyar
1111 ^ 0000 1111
1111 ^ 0001 1110
1111 ^ 0010 1101
1111 ^ 0100 1011

JavaScript na'warin na'warin AND (&)

Idan baki na'warin duniya suna 1, na'warin na'warin AND hana'warin 1:

Decimal Binary
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 & 1 00000000000000000000000000000001 (1)

实例

var x = 5 & 1;

亲自试一试

JavaScript na'warin na'warin

Idan wuri daya na kaiwa yana kaiwa 1, bitwise OR zai kaiwa 1:

Decimal Binary
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 | 1 00000000000000000000000000000101 (5)

实例

var x = 5 | 1;

亲自试一试

Bitwise XOR (^)

Idan na'urin na kaiwa su ne dantata, XOR zai kaiwa 1:

Decimal Binary
5 00000000000000000000000000000101
1 00000000000000000000000000000001
5 ^ 1 00000000000000000000000000000100 (4)

实例

var x = 5 ^ 1;

亲自试一试

Bitwise NOT (~)

Decimal Binary
5 00000000000000000000000000000101
~5 11111111111111111111111111111010 (-6)

实例

var x = ~5;

亲自试一试

Shift Left (<<)

Tani ne sauri na kaiwa zero a kan gaba a kan gaba. Tashi a kan gaba yana kaiwa a kan gaba, kuma na'urin na kaiwa a kan gaba yana kaiwa:

Decimal Binary
5 00000000000000000000000000000101
5 << 1 00000000000000000000000000001010 (10)

实例

var x = 5 << 1;

亲自试一试

Shift Right (>>)

Tani ne sauri na kaiwa na kaiwa daya a kan gaba. Tashi a kan gaba yana kaiwa a kan gaba, kuma na'urin na kaiwa a kan gaba yana kaiwa:

Decimal Binary
-5 11111111111111111111111111111011
-5 >> 1 11111111111111111111111111111101 (-3)

实例

var x = -5 >> 1;

亲自试一试

Shift Right (>>>)

Tani ne sauri na kaiwa zero a kan nan gaba. Tashi a kan gaba na kaiwa zero a kan gaba yana kaiwa a kan gaba, kuma na'urin na kaiwa a kan gaba yana kaiwa:

Decimal Binary
5 00000000000000000000000000000101
5 >>> 1 00000000000000000000000000000010 (2)

实例

var x = 5 >>> 1;

亲自试一试

Integer mai bit 32 mai iya da tsaki (Binary)

Kamfanin da ke tsofiyar wuri daya na 32 bit zai iya samun tunanin:

二进制表示 十进制值
00000000000000000000000000000001 1
00000000000000000000000000000010 2
00000000000000000000000000000100 4
00000000000000000000000000001000 8
00000000000000000000000000010000 16
00000000000000000000000000100000 32
00000000000000000000000001000000 64

多设置一些数位揭示了二进制的模式:

二进制表示 十进制值
00000000000000000000000000000101 5 (4 + 1)
00000000000000000000000000101000 40 (32 + 8)
00000000000000000000000000101101 45 (32 + 8 + 4 + 1)

负数是正数的二进制补码加 1:

二进制表示 十进制值
00000000000000000000000000000101 5
11111111111111111111111111111011 -5
00000000000000000000000000101000 40
11111111111111111111111111011000 -40
11111111111111111111111111011001 -41

把十进制转换为二进制

实例

function dec2bin(dec){
    return (dec >>> 0).toString(2);
}

亲自试一试

把二进制转换为十进制

实例

function bin2dec(bin){
    return parseInt(bin, 2).toString(10);
}

亲自试一试