🧮 JavaScript Bitwise Operations: Temeller, Örnekler ve Eğlenceli İpuçları

🧮 JavaScript Bitwise Operations: Temeller, Örnekler ve Eğlenceli İpuçları

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örAnlamıÖrnek
&AND5 & 3
``OR
^XOR5 ^ 3
~NOT~5
<<Left Shift5 << 1
>>Right Shift5 >> 1
>>>Zero-fill Right Shift5 >>> 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 &amp; b); // 0101 &amp; 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 &lt;&lt; 0; // 0001
const WRITE = 1 &lt;&lt; 1; // 0010
let permissions = READ | WRITE; // 0011

console.log((permissions &amp; 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 &lt;&lt; 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 &lt;&lt; 0; // 0001
const WRITE = 1 &lt;&lt; 1; // 0010
const EXEC  = 1 &lt;&lt; 2; // 0100

let permissions = READ | EXEC; // 0101

console.log((permissions &amp; WRITE) !== 0); // false
console.log((permissions &amp; 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ı

  1. Bitwise operatörler, sayıları binary düzeyde manipüle eder.
  2. Temel operatörler: &, |, ^, ~, <<, >>, >>>.
  3. Pratik kullanım: maskeler, bayraklar, izinler, performans işleri.
  4. Shift operatörleri ile hızlı çarpma/bölme gibi işlemler yapılabilir.
  5. 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.

Comments

No comments yet. Why don’t you start the discussion?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir