Bitwise işlemler, sayılar üzerinde bit düzeyinde gerçekleştirilen işlemlerdir. JavaScript, bit düzeyinde işlemler yapabilmek için bir dizi operatör sağlar. Bu operatörler, düşük seviyeli programlama ve performans optimizasyonu gerektiren durumlar için son derece kullanışlıdır. Bu yazıda, JavaScript’teki bitwise işlemleri ve bunların nasıl kullanılacağını örnek kod bloklarıyla inceleyeceğiz.
Bitwise Operatörler
JavaScript’te bitwise operatörler, sayıları 32-bit tamsayılar olarak işler ve bit düzeyinde işlemler gerçekleştirir. İşte temel bitwise operatörler:
- AND (
&
) - OR (
|
) - XOR (
^
) - NOT (
~
) - Left Shift (
<<
) - Sign-propagating Right Shift (
>>
) - Zero-fill Right Shift (
>>>
)
AND (&
)
AND operatörü, iki operandın her bir bitini karşılaştırır ve her iki bit de 1 ise sonucu 1, aksi takdirde 0 yapar.
let a = 5; // 0101
let b = 3; // 0011
let result = a & b; // 0001 (1)
console.log(result); // Output: 1
OR (|
)
OR operatörü, iki operandın her bir bitini karşılaştırır ve herhangi bir bit 1 ise sonucu 1 yapar.
let a = 5; // 0101
let b = 3; // 0011
let result = a | b; // 0111 (7)
console.log(result); // Output: 7
XOR (^
)
XOR operatörü, iki operandın her bir bitini karşılaştırır ve yalnızca bir bit 1 ise sonucu 1 yapar.
let a = 5; // 0101
let b = 3; // 0011
let result = a ^ b; // 0110 (6)
console.log(result); // Output: 6
NOT (~
)
NOT operatörü, tek bir operandın tüm bitlerini ters çevirir.
let a = 5; // 0101
let result = ~a; // 1010 (JavaScript'te -6)
console.log(result); // Output: -6
Left Shift (<<
)
Left Shift operatörü, bir sayının bitlerini belirtilen sayı kadar sola kaydırır. Sağdan boşalan bitler 0 ile doldurulur.
let a = 5; // 0101
let result = a << 1; // 1010 (10)
console.log(result); // Output: 10
Sign-propagating Right Shift (>>
)
Sign-propagating Right Shift operatörü, bir sayının bitlerini belirtilen sayı kadar sağa kaydırır. Soldan boşalan bitler, orijinal sayının işaret bitine göre doldurulur.
let a = -10; // 11110110 (in 8-bit representation)
let result = a >> 1; // 11111011 (-5)
console.log(result); // Output: -5
Zero-fill Right Shift (>>>
)
Zero-fill Right Shift operatörü, bir sayının bitlerini belirtilen sayı kadar sağa kaydırır. Soldan boşalan bitler her zaman 0 ile doldurulur.
let a = -10; // 11110110 (in 8-bit representation)
let result = a >>> 1; // 01111101 (in 32-bit representation, 2147483643)
console.log(result); // Output: 2147483643
Bitwise Operatörlerin Kullanım Alanları
Bitwise operatörler, çeşitli alanlarda kullanılır:
Maskeleme
Bir sayının belirli bitlerini kontrol etmek veya değiştirmek için kullanılır.
let value = 0b1010; // 10 in decimal
let mask = 0b0100; // 4 in decimal
let masked = value & mask; // 0000 (0)
console.log(masked); // Output: 0
Bit Manipülasyonu
Bayrak (flag) kullanımı, belirli bitleri ayarlamak veya temizlemek için kullanılır.
let flags = 0b1010; // 10 in decimal
// Set the 1st bit
flags = flags | 0b0001; // 1011 (11)
console.log(flags); // Output: 11
// Clear the 3rd bit
flags = flags & ~0b1000; // 0011 (3)
console.log(flags); // Output: 3
Performans Optimizasyonu
Bazı matematiksel işlemler, bitwise operatörlerle daha hızlı yapılabilir.
// Multiply by 2
let value = 5;
let result = value << 1; // 10
console.log(result); // Output: 10
// Divide by 2
result = value >> 1; // 2
console.log(result); // Output: 2
Sonuç
Bitwise operatörler, JavaScript’te güçlü ve esnek bir araç seti sunar. Bu operatörler, sayılar üzerinde bit düzeyinde işlemler yapmanıza olanak tanır ve performans optimizasyonu, bit manipülasyonu ve bayrak kullanımı gibi çeşitli alanlarda kullanılabilir. Bitwise operatörleri anlamak ve doğru kullanmak, JavaScript’te daha etkili ve verimli kod yazmanıza yardımcı olacaktır.