Merhaba sevgili kod kahramanları! 👋
Bugün JavaScript’in biraz gizemli ama süper güçlü silahı olan bitwise (bit düzeyinde) operatörler ile tanışacağız.
Hazır ol: Hem öğreneceğiz, hem kafamız karışacak, hem de bazı komik durumlarla karşılaşacağız 😏
Bitwise operatörleri öğrenmek aslında bilgisayarın beynini görmek gibi. 0 ve 1’lerin dünyasına dalacağız! 🌐
🔹 1️⃣ Bitwise Operatörler Nedir ve Neden Kullanılır?
Bitwise operatörler, sayıları binary (ikili) düzeyde manipüle etmemizi sağlar.
Bilgisayarlar sayıları 0 ve 1 ile gördüğü için, bu operatörler performans odaklı işlemler ve bayrak/maskeler için mükemmeldir.
Ana bitwise operatörler ve anlamları:
| Operatör | Anlamı | Örnek |
|---|---|---|
& | AND | 5 & 3 |
| ` | ` | OR |
^ | XOR | 5 ^ 3 |
~ | NOT | ~5 |
<< | Left Shift | 5 << 1 |
>> | Right Shift | 5 >> 1 |
>>> | Zero-fill Right Shift | 5 >>> 1 |
💡 İpucu: Bitwise operatörler çoğunlukla izinler, ayarlar, maskeler ve performans gerektiren durumlarda kullanılır.
🔹 2️⃣ Bitwise AND (&): İki 1 Olunca 1
Bitwise AND, her iki bit 1 ise sonuç 1, diğer durumlarda 0 verir.
Yani biraz “ikimiz de evet dersek, o zaman evet” mantığı. 😏
Örnek 1:
let a = 5; // 0101
let b = 3; // 0011
console.log(a & b); // 0101 & 0011 = 0001 → 1
Açıklama:
- 0101 ve 0011’in her bitini karşılaştırıyoruz
- Sadece sağdaki bit ikisinde de 1 → sonuç 1
- Diğerleri 0
💡 Pratik İpucu: AND operatörü masking için harika. Örneğin bir sayının belirli bitlerini kontrol etmek istiyorsan AND kullanabilirsin.
Örnek 2: Bayrak Kontrolü
const READ = 1 << 0; // 0001
const WRITE = 1 << 1; // 0010
let permissions = READ | WRITE; // 0011
console.log((permissions & WRITE) !== 0); // true
Okuma ve yazma izinlerini tek sayıda saklamak ve kontrol etmek böyle kolay 😎
🔹 3️⃣ Bitwise OR (|): Bir Tane 1 Yeter
OR, en az bir bit 1 ise sonuç 1 verir.
“Ben veya sen evet dersek, evet olur” mantığı. 😏
Örnek:
let a = 5; // 0101
let b = 3; // 0011
console.log(a | b); // 0101 | 0011 = 0111 → 7
Açıklama:
- Bit bit karşılaştırıyoruz, en az bir 1 varsa 1 yaz
- Sonuç: 0111 → 7
💡 Pratik İpucu: OR, bitleri açmak/aktif etmek için kullanılır. Mesela bir bayrağı eklemek istiyorsun, OR ile halledersin.
🔹 4️⃣ Bitwise XOR (^): Farklı Olunca 1
XOR, bitler farklıysa 1, aynıysa 0 verir.
“Farklı olunca çalışır” mantığı, toggle yapmak için süper. 🎛️
Örnek:
let a = 5; // 0101
let b = 3; // 0011
console.log(a ^ b); // 0101 ^ 0011 = 0110 → 6
Açıklama:
- 0101 ve 0011 karşılaştırılıyor
- Farklı olan bitlerde 1 → sonuç 0110 → 6
💡 Pratik İpucu: XOR, bit toggle veya şifreleme için kullanılabilir. Mesela bir ışığı açıp kapamak gibi düşün. 💡💡
🔹 5️⃣ Bitwise NOT (~): Ters Çevir
NOT, tüm bitleri tersine çevirir. 0 → 1, 1 → 0.
Ama dikkat: JavaScript’de negatif sayılara dönüşür 😅
Örnek:
let a = 5; // 0101
console.log(~a); // 1010 → -6 (2’s complement)
Açıklama:
- 5’in binary’i 0101
- Tersine çevir → 1010
- 2’s complement sayesinde -6 olur
💡 Pratik İpucu: NOT ile dikkat et, negatif sayılar kafa karıştırabilir!
🔹 6️⃣ Shift Operatörleri: Kaydır ve Çarp/Böl
Shift operatörleri, bitleri sola veya sağa kaydırır.
- Left Shift (
<<): Sola kaydır, yeni bitler 0 → hızlı çarpma gibi - Right Shift (
>>): Sağa kaydır, işaret biti korunur → hızlı bölme gibi - Zero-fill Right Shift (
>>>): Sağa kaydır, boş bitler 0 → pozitif yapmak için
Örnek Left Shift
console.log(5 << 1); // 0101 → 1010 → 10
Örnek Right Shift
console.log(-10 >> 1); // -5
Örnek Zero-fill Right Shift
console.log(-10 >>> 1); // 2147483643
💡 Pratik İpucu: Shift operatörleri performans ve bit manipülasyonu için harika.
🔹 7️⃣ Pratik Örnek: İzinler ve Bayraklar
Diyelim ki 3 farklı izin var:
const READ = 1 << 0; // 0001
const WRITE = 1 << 1; // 0010
const EXEC = 1 << 2; // 0100
let permissions = READ | EXEC; // 0101
console.log((permissions & WRITE) !== 0); // false
console.log((permissions & READ) !== 0); // true
💡 İpucu: Bitwise operatörler izinler ve ayarlar için süper kullanışlıdır.
🔹 8️⃣ Komik Hatalar ve Anlar
- XOR ile toggle yaparken bir bit yanlışsa → “hmm neden değişmedi?” 😂
- NOT ile negatif sayılar → “Negatif mi, pozitif mi?” 😅
- Shift ile büyük sayılar → “Vay canına, sayı 2 milyara çıktı!” 😲
🔹 9️⃣ Özet ve İpuçları
- Bitwise operatörler, sayıları binary düzeyde manipüle eder.
- Temel operatörler:
&,|,^,~,<<,>>,>>>. - Pratik kullanım: maskeler, bayraklar, izinler, performans işleri.
- Shift operatörleri ile hızlı çarpma/bölme gibi işlemler yapılabilir.
- Komik hatalar ve kafa karışıklıkları normaldir 😎
💡 Mini İpucu: Küçük testler yaparak operatörleri deneyin, bitleri daha iyi göreceksiniz ve kafanız açılacak.

