Vifaa vya Kibali cha JavaScript

Vifaa vya Kibali cha JavaScript

运算符 名称 描述
& AND 如果两位都是 1 则设置每位为 1
| OR 如果两位之一为 1 则设置每位为 1
^ XOR 如果两位只有一位为 1 则设置每位为 1
~ NOT 反转所有位
<< 零填充左位移 通过从右推入零向左位移,并使最左边的位脱落。
>> 有符号右位移 通过从左推入最左位的拷贝来向右位移,并使最右边的位脱落。
>>> 零填充右位移 通过从左推入零来向右位移,并使最右边的位脱落。

Mifano

Mashirika Matokeo inaonekana kama Matokeo
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 inatumia viwanda vya mabaya vya 32 vingine

JavaScript inasafiri namba kama namba za 64 vingine za tukio, lakini viwakiliano vya mabaya vinaendelea kwa namba za 32 vingine za binari.

Kwenye uendeshaji wa viwakiliano wa mabaya, JavaScript inatumia namba za 32 vingine za kina.

Baada ya kufanya mashirika wa mabaya, matokeo huitokana na namba za 64 vingine za JavaScript.

Mfano wa juu una tumia namba za vingine za 4 vya binari vya kina.

Kwa sababu JavaScript inatumia viwanda vya kina vya 32 vingine, JavaScript inatokana na -6.

00000000000000000000000000000101 (5)

11111111111111111111111111111010 (~5 = -6)

Viwanda vya kina vinaendelea kwa mabaya wa kina kwa namba vya kina.

Viwakiliano wa mabaya AND

Kama viwakiliano wa mabaya AND kati ya namba zinaonekana kama 1, namba zinaonekana kama 1 inaunda 1.

Mfano wa viwanda:

Mashirika Matokeo
0 & 0 0
0 & 1 0
1 & 0 0
1 & 1 1

Mfano wa mabaya:

Mashirika Matokeo
1111 & 0000 0000
1111 & 0001 0001
1111 & 0010 0010
1111 & 0100 0100

Viwakiliano wa mabaya OR

Kama viwakiliano wa mabaya OR kati ya namba zinaonekana kama 1, namba zinaonekana kama 1 inaunda 1:

Mfano wa viwanda

Mashirika Matokeo
0 | 0 0
0 | 1 1
1 | 0 1
1 | 1 1

Mfano wa mabaya:

Mashirika Matokeo
1111 | 0000 1111
1111 | 0001 1111
1111 | 0010 1111
1111 | 0100 1111

Viwakiliano wa mabaya XOR

Kama viwakiliano wa mabaya XOR kati ya namba zinaonekana kama 1, namba zinaonekana kama 1 inaunda 1:

Mfano wa viwanda:

Mashirika Matokeo
0 ^ 0 0
0 ^ 1 1
1 ^ 0 1
1 ^ 1 0

Mfano wa mabaya:

Mashirika Matokeo
1111 ^ 0000 1111
1111 ^ 0001 1110
1111 ^ 0010 1101
1111 ^ 0100 1011

JavaScript viwakiliano wa mabaya AND (&)

Iki kati ya namba zinaonekana kama 1, viwakiliano wa mabaya AND (&) inaunda 1:

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

Mifano

var x = 5 & 1;

Jifunze tena

JavaScript viwakiliano wa mabaya OR (|)

Kama mmoja ya namba zimezungumza ina 1, OR inaruhusu 1:

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

Mifano

var x = 5 | 1;

Jifunze tena

JavaScript bitwise XOR (^)

Kama namba zimezungumza, XOR inaruhusu 1:

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

Mifano

var x = 5 ^ 1;

Jifunze tena

JavaScript bitwise NOT (~)

Decimal Binary
5 00000000000000000000000000000101
~5 11111111111111111111111111111010 (-6)

Mifano

var x = ~5;

Jifunze tena

JavaScript (zero-filled) bitwise left shift (<<)

Hii ni kusaidia na namba nene zilizopita inayotumia namba nane kutoka kushoto. Inavyotumia namba nene kutoka kushoto, namba kikuu inatumiwa kusaidia kwenye uharibifu:

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

Mifano

var x = 5 << 1;

Jifunze tena

JavaScript (signed) bitwise right shift (>>)

Hii ni kusaidia na namba nene zilizopita inayotumia kiwango cha namba nene. Namba kikuu inayotumika inatumiwa kutoka kushoto, namba kikuu inaendelea kwenye nafasi inayotumika kwenye uharibifu:

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

Mifano

var x = -5 >> 1;

Jifunze tena

JavaScript (zero-filled) right shift (>>>)

Hii ni kusaidia na zilizopita zilizotumia namba nje ya mawimbi. Inavyotumia namba nane kutoka kushoto, namba kikuu inayotumika inaendelea kwenye nafasi inayotumika kwenye uharibifu:

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

Mifano

var x = 5 >>> 1;

Jifunze tena

32-bit signed integer (binary number)

Inafikia inaonyesha kwa kumtaarifu kiwango cha 32 wakati kwa nafasi moja inayofaa kwa urahisi:

Muonekano wa binari Wandiko wa sita
00000000000000000000000000000001 1
00000000000000000000000000000010 2
00000000000000000000000000000100 4
00000000000000000000000000001000 8
00000000000000000000000000010000 16
00000000000000000000000000100000 32
00000000000000000000000001000000 64

Kumekadiriwa kwa vifaa vya namba vya zaidi inatokana na mpangilio wa binari:

Muonekano wa binari Wandiko wa sita
00000000000000000000000000000101 5 (4 + 1)
00000000000000000000000000101000 40 (32 + 8)
00000000000000000000000000101101 45 (32 + 8 + 4 + 1)

Wenyeji wengi ni mabaki ya binari ya wanaoonekana na 1:

Muonekano wa binari Wandiko wa sita
00000000000000000000000000000101 5
11111111111111111111111111111011 -5
00000000000000000000000000101000 40
11111111111111111111111111011000 -40
11111111111111111111111111011001 -41

Kuchukua kwenye vifaa vya sita kwenda vifaa vya binari

Mifano

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

Jifunze tena

Kuchukua kwenye vifaa vya binari kwenda vifaa vya sita

Mifano

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

Jifunze tena