JavaScript Bitli Amallar (Bitwise Operations)
JavaScript bitli operatorlari sonlar bilan bit (ikkilik sanoq tizimi) darajasida ishlash imkonini beradi.
Bitli Operatorlar
| Operator | Nomi | Tavsif |
|---|---|---|
& | AND (VA) | Ikkala bit ham 1 bo'lganda 1 qaytaradi |
| ` | ` | OR (YOKI) |
^ | XOR | Faqat bittasi 1 bo'lsa 1 qaytaradi |
~ | NOT (INKOR) | Barcha bitlarni teskarisiga o'zgartiradi |
<< | Chapga surish (Zero fill) | Bitlarni chapga suradi va o'ngdan nol qo'shadi |
>> | O'ngga surish (Signed) | Ishorani saqlagan holda o'ngga suradi |
>>> | O'ngga surish (Zero fill) | Bitlarni o'ngga suradi va chapdan nol qo'shadi |
Misollar
| Amallat | Natija | Ikkilik ko'rinishi | Natija (ikkilik) |
|---|---|---|---|
5 & 1 | 1 | 0101 & 0001 | 0001 |
| `5 | 1` | 5 | `0101 |
5 ^ 1 | 4 | 0101 ^ 0001 | 0100 |
~ 5 | -6 | ~0101 | ...1010 |
5 << 1 | 10 | 0101 << 1 | 1010 |
5 >> 1 | 2 | 0101 >> 1 | 0010 |
5 >>> 1 | 2 | 0101 >>> 1 | 0010 |
JavaScript-da 32-bitli Operands
JavaScript-da sonlar 64-bitli floating point sifatida saqlansa-da, bitli amallar 32-bitli ishorali butun sonlar (signed integers) ustida bajariladi.
Amal bajarilishidan oldin son 32-bitga o'tkaziladi, amal bajarilgandan keyin esa yana 64-bitli formatga qaytariladi.
Eslatma
Ishorali butun sonlarda eng chapdagi (31-chi) bit manfiy ishorani bildiradi. Shuning uchun ~ 5 natijasi 10 emas, balki -6 bo'ladi.
Asosiy Bitli Amallar
Bitli AND (&)
Ikkala bit ham 1 bo'lsagina 1 qaytariladi.
let x = 5 & 1; // 1Bitli OR (|)
Kamida bitta bit 1 bo'lsa 1 qaytariladi.
let x = 5 | 1; // 5Bitli XOR (^)
Bitlar bir-biridan farq qilsa 1 qaytariladi.
let x = 5 ^ 1; // 4Bitli NOT (~)
Barcha bitlar teskarisiga o'zgartiriladi (0 -> 1, 1 -> 0).
let x = ~5; // -6Surish Operatorlari (Shift Operators)
Chapga surish (<<)
Bitlarni chapga suradi. O'ngdan bo'shatilgan o'rinlar nollar bilan to'ldiriladi.
let x = 5 << 1; // 10O'ngga ishorali surish (>>)
Bitlarni o'ngga suradi va eng chapdagi bitning nusxasini (ishorani) chapdan qo'shadi.
let x = -5 >> 1; // -3O'ngga noli surish (>>>)
Bitlarni o'ngga suradi va chapdan har doim nollarni qo'shadi (ishora yo'qoladi).
let x = 5 >>> 1; // 2Bitli Tayinlash Operatorlari
| Operator | Misol | Ma'nosi |
|---|---|---|
&= | x &= y | x = x & y |
| ` | =` | `x |
^= | x ^= y | x = x ^ y |
<<= | x <<= y | x = x << y |
>>= | x >>= y | x = x >> y |
>>>= | x >>>= y | x = x >>> y |
Sonlarni O'zgartirish Funksiyalari
O'nlikdan Ikkilikka:
function dec2bin(dec) {
return (dec >>> 0).toString(2);
}Ikkilikdan O'nlikka:
function bin2dec(bin) {
return parseInt(bin, 2).toString(10);
}Bilasizmi?
Dunyoda faqat 10 turdagi odamlar bor: ikkilik tizimni tushunadiganlar va tushunmaydiganlar. 😄
