- JavaScript Bitwise Operators
- JavaScript Uses 32 bits Bitwise Operands
- JavaScript нь 32 битийн Bitwise Operands ашигладаг
- Bitwise AND
- Bitwise OR
- Bitwise XOR
- JavaScript Bitwise AND (&)
- JavaScript Bitwise OR (|)
- JavaScript Bitwise XOR (^)
- JavaScript Bitwise NOT (~)
- JavaScript (Zero Fill) Bitwise Left Shift (<<)
- JavaScript (Тэг дүүргэлт) Босоо зүүн тийш шилжүүлэх (<<)
- JavaScript (Sign Preserving) Bitwise Right Shift (>>)
- JavaScript (Тэмдгийг хадгалах) Битүү баруун тийш шилжүүлэх (>>)
- JavaScript (Zero Fill) Right Shift (>>>)
- Binary Numbers
- Converting Decimal to Binary
- Converting Binary to Decimal
JavaScript Bitwise Operators #
Operator | Name | Description |
---|---|---|
& | AND | Sets each bit to 1 if both bits are 1
Хоёр бит 1 бол бит бүрийг 1 болгож тохируулна |
| | OR | Sets each bit to 1 if one of two bits is 1
Хоёр битийн нэг нь 1 бол бит бүрийг 1 болгож тохируулна |
^ | XOR | Sets each bit to 1 if only one of two bits is 1
Хоёр битийн зөвхөн нэг нь 1 бол бит бүрийг 1 болгоно |
~ | NOT | Inverts all the bits
Бүх битийг эргүүлнэ |
<< | Zero fill left shift | Shifts left by pushing zeros in from the right and let the leftmost bits fall off
Тэгийг баруун талаас нь түлхээд зүүн тийш шилжиж, хамгийн зүүн талын хэсгүүд унана |
>> | Signed right shift | Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off
Хамгийн зүүн талын битийн хуулбарыг зүүнээс түлхэж баруун тийш шилжүүлээд хамгийн баруун талын хэсгүүдийг унага |
>>> | Zero fill right shift | Shifts right by pushing zeros in from the left, and let the rightmost bits fall off
Тэгийг зүүнээс түлхэж баруун тийш шилжүүлээд хамгийн баруун талын хэсгүүд унана |
Examples Жишээнүүд
Operation | Result | Same as | Result |
---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
5 | 1 | 5 | 0101 | 0001 | 0101 |
~ 5 | 10 | ~0101 | 1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript Uses 32 bits Bitwise Operands #
JavaScript нь 32 битийн Bitwise Operands ашигладаг #
JavaScript stores numbers as 64 bits floating point numbers, but all bitwise operations are performed on 32 bits binary numbers.
JavaScript нь тоонуудыг 64 битийн хөвөгч цэгийн тоогоор хадгалдаг боловч бүх битийн үйлдлийг 32 битийн хоёртын тоогоор гүйцэтгэдэг.
Before a bitwise operation is performed, JavaScript converts numbers to 32 bits signed integers.
Бяцхан үйлдэл хийхээс өмнө JavaScript нь тоонуудыг 32 бит тэмдэгт бүхэл тоо болгон хөрвүүлдэг.
After the bitwise operation is performed, the result is converted back to 64 bits JavaScript numbers.
Битрат үйлдлийг хийсний дараа үр дүнг 64 битийн JavaScript дугаар болгон хөрвүүлнэ.
The examples above uses 4 bits unsigned binary numbers. Because of this ~ 5 returns 10.
Дээрх жишээнд 4 бит гарын үсэггүй хоёртын тоог ашигласан болно. Үүнээс болоод ~ 5 нь 10-ийг буцаадаг.
Since JavaScript uses 32 bits signed integers, it will not return 10. It will return -6.
JavaScript нь 32 бит гарын үсэг бүхий бүхэл тоонуудыг ашигладаг тул буцааж өгөхгүй 10. Энэ нь -6 буцаах болно.
00000000000000000000000000000101 (5)
11111111111111111111111111111010 (~5 = -6)
A signed integer uses the leftmost bit as the minus sign.
Гарын үсэг бүхий бүхэл тоо нь хамгийн зүүн талын битийг хасах тэмдэг болгон ашигладаг.
Bitwise AND #
When a bitwise AND is performed on a pair of bits, it returns 1 if both bits are 1.
Хос бит дээр bitwise AND-ийг гүйцэтгэхэд хоёулаа 1 бол 1-ийг буцаана.
One bit example:
Нэг бит жишээ:
Operation | Result |
---|---|
0 & 0 | 0 |
0 & 1 | 0 |
1 & 0 | 0 |
1 & 1 | 1 |
4 bits example:
4 битийн жишээ:
Operation | Result |
---|---|
1111 & 0000 | 0000 |
1111 & 0001 | 0001 |
1111 & 0010 | 0010 |
1111 & 0100 | 0100 |
Bitwise OR #
When a bitwise OR is performed on a pair of bits, it returns 1 if one of the bits are 1:
Хос бит дээр bitwise OR-ийг гүйцэтгэх үед, хэрэв аль нэг бит нь 1 бол 1-ийг буцаана.
One bit example:
Нэг бит жишээ:
Operation | Result |
---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
4 bits example:
4 битийн жишээ:
Operation | Result |
---|---|
1111 | 0000 | 1111 |
1111 | 0001 | 1111 |
1111 | 0010 | 1111 |
1111 | 0100 | 1111 |
Bitwise XOR #
When a bitwise XOR is performed on a pair of bits, it returns 1 if the bits are different:
Хос бит дээр bitwise XOR-ийг гүйцэтгэх үед, хэрэв битүүд өөр байвал 1-ийг буцаана.
One bit example:
Нэг бит жишээ:
Operation | Result |
---|---|
0 ^ 0 | 0 |
0 ^ 1 | 1 |
1 ^ 0 | 1 |
1 ^ 1 | 0 |
4 bits example:
Operation | Result |
---|---|
1111 ^ 0000 | 1111 |
1111 ^ 0001 | 1110 |
1111 ^ 0010 | 1101 |
1111 ^ 0100 | 1011 |
JavaScript Bitwise AND (&) #
Bitwise AND returns 1 only if both bits are 1:
Bitwise AND нь 2 бит 1 бол л 1-ийг буцаана:
Decimal | Binary |
---|---|
5 | 00000000000000000000000000000101 |
1 | 00000000000000000000000000000001 |
5 & 1 | 00000000000000000000000000000001 (1) |
Example Жишээ #
var x = 5 & 1;
var x = 5 | 1;
var x = 5 ^ 1;
var x = ~5;
JavaScript (Zero Fill) Bitwise Left Shift (<<) #
JavaScript (Тэг дүүргэлт) Босоо зүүн тийш шилжүүлэх (<<) #
This is a zero fill left shift. One or more zero bits are pushed in from the right, and the leftmost bits fall off:
Энэ бол тэгээр дүүргэсэн зүүн ээлж юм. Нэг буюу түүнээс дээш тэг битийг баруун талаас түлхэхэд хамгийн зүүн тал нь унана:
Decimal Аравтын бутархай |
Binary (Нэмэх,хасах) |
---|---|
5 | 00000000000000000000000000000101 |
5 << 1 | 00000000000000000000000000001010 (10) |
Example Жишээ #
var x = 5 << 1;
JavaScript (Sign Preserving) Bitwise Right Shift (>>) #
JavaScript (Тэмдгийг хадгалах) Битүү баруун тийш шилжүүлэх (>>) #
This is a sign preserving right shift. Copies of the leftmost bit are pushed in from the left, and the rightmost bits fall off:
Энэ бол зөв шилжилтийг хадгалах тэмдэг юм. Хамгийн зүүн талын битийн хуулбарыг зүүн талаас түлхэж оруулаад хамгийн баруун талын хэсгүүд унана.
Decimal Аравтын Бутархай |
Binary (Нэмэх,Хасах) |
---|---|
-5 | 11111111111111111111111111111011 |
-5 >> 1 | 11111111111111111111111111111101 (-3) |
Example Жишээ #
var x = -5 >> 1;
JavaScript (Zero Fill) Right Shift (>>>) #
This is a zero fill right shift. One or more zero bits are pushed in from the left, and the rightmost bits fall off:
Энэ бол тэгээр дүүргэх баруун шилжүүлэг юм. Нэг буюу түүнээс дээш тэг битийг зүүнээс түлхэхэд хамгийн баруун тал нь унана:
Decimal Аравтын Бутархай |
Binary (Нэмэх,Хасах) |
---|---|
5 | 00000000000000000000000000000101 |
5 >>> 1 | 00000000000000000000000000000010 (2) |
Example Жишээ #
var x = 5 >>> 1;
Binary Numbers #
Binary numbers with only one bit set is easy to understand:
Зөвхөн нэг битийн багцтай нэмэх хасах тоог ойлгоход хялбар байдаг.
Binary Representation | Decimal value |
---|---|
00000000000000000000000000000001 | 1 |
00000000000000000000000000000010 | 2 |
00000000000000000000000000000100 | 4 |
00000000000000000000000000001000 | 8 |
00000000000000000000000000010000 | 16 |
00000000000000000000000000100000 | 32 |
00000000000000000000000001000000 | 64 |
Setting a few more bits reveals the binary pattern:
Цөөн хэдэн битийг тохируулснаар эерэг сөрөг хэв шинжийг харуулна.
Binary Representation | Decimal value |
---|---|
00000000000000000000000000000101 | 5 (4 + 1) |
00000000000000000000000000001101 | 13 (8 + 4 + 1) |
00000000000000000000000000101101 | 45 (32 + 8 + 4 + 1) |
JavaScript binary numbers are stored in two’s complement format.
JavaScript эерэг сөрөг дугаарыг хоёрын нэмэлт хэлбэрээр хадгалдаг.
This means that a negative number is the bitwise NOT of the number plus 1:
Энэ нь сөрөг тоо нь нэмэх 1-ийн тоогоор БИШ гэсэн үг юм:
Binary Representation | Decimal value |
---|---|
00000000000000000000000000000101 | 5 |
11111111111111111111111111111011 | -5 |
00000000000000000000000000000110 | 6 |
11111111111111111111111111111010 | -6 |
00000000000000000000000000101000 | 40 |
11111111111111111111111111011000 | -40 |
Converting Decimal to Binary #
Example Жишээ #
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
function bin2dec(bin){
return parseInt(bin, 2).toString(10);
}