JavaScript'te Bitwise Operators, Typed Arrays, Array Buffers

Bitwise Operators (Bit Düzenleyici Operatörler)

JavaScript'te bit operatörleri (bitwise operators), sayıları bit seviyesinde işlemek için kullanılan operatörlerdir. Bit operatörleri, sayıları binary (ikili, ikilik) olarak işleyerek hızlı ve optimize edilmiş işlemler yapmayı sağlar. JavaScript'te kullanılan bit operatörleri şunlardır:

  • & (AND): Her iki operandın bitlerinin de 1 olduğu durumları 1 yapar. Örnek: 2 & 5 sonucu 0.
  • | (OR): En az bir operandın bitinin 1 olduğu durumları 1 yapar. Örnek: 2 | 5 sonucu 7.
  • ^ (XOR): Her iki operandın bitleri farklı ise 1 yapar. Örnek: 2 ^ 5 sonucu 7.
  • ~ (NOT): Operandın bitlerini tersine çevirir. Örnek: ~5 sonucu -6.
  • << (Left Shift): Operandı belirtilen sayı kadar sola kaydırır. Örnek: 5 << 1 sonucu 10.
  • >> (Sign-propagating Right Shift): Ön işaret bitini koruyarak operandı belirtilen sayı kadar sağa kaydırır. Örnek: 10 >> 1 sonucu 5.
  • >>> (Zero-fill Right Shift): Operandı belirtilen sayı kadar sağa kaydırır ve boş yerlere sıfır ekler. Örnek: 10 >>> 1 sonucu 5.

Typed Arrays (Tipli Diziler)

JavaScript, temel olarak dinamik tiplere sahip bir dildir. Ancak, bazen daha düşük seviyeli işlemler yapmak için tip güvenli (type safe) veri yapılarına ihtiyaç duyabiliriz. Bu noktada TypedArray sınıfı devreye girer. Bu sınıf, bellekte hafif bir veri yapılarını temsil eder ve özellikle sayısal veriler için optimize edilmiştir. TypedArray'ler, bellek kullanımını ve erişim hızını önemli ölçüde artırabilir. Örnek tipli diziler şunlardır: Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array ve daha fazlası.

Örnek bir Int8Array oluşturmak:

let intDizi = new Int8Array(4); // 4 elemanlık bir Int8Array oluştur
intDizi[0] = 10;
intDizi[1] = 20;
console.log(intDizi); // Int8Array(4) [ 10, 20, 0, 0 ]

Array Buffers (Dizi Tamponları)

ArrayBuffer sınıfı, bellekte sabit bir boyutta veri depolamak için kullanılır. ArrayBuffer'lar, bellek kullanımını ve veri erişimini optimize etmek için kullanışlıdır. Dizinin değerlerini değiştirmek ve okumak için TypedArray'ler veya DataView sınıfı kullanılır. ArrayBuffer'lar, genellikle ağ işlemleri, dosya okuma/yazma ve daha fazlası gibi birden fazla veriyi yönetmek için kullanılır.

Örnek bir ArrayBuffer oluşturmak:

let buffer = new ArrayBuffer(16); // 16 byte boyutunda bir ArrayBuffer oluştur
let int32View = new Int32Array(buffer); // ArrayBuffer üzerinde bir Int32Array oluştur
int32View[0] = 42;
console.log(int32View[0]); // 42

Sonuç

Bitwise operatörler, tipli diziler (Typed Arrays) ve dizi tamponları (Array Buffers), JavaScript'in daha düşük seviyeli işlemler yapmak için sunduğu güçlü araçlardır. Bu araçlarla sayısal verileri bit seviyesinde işleyebilir, bellekte optimize edilmiş veri yapıları oluşturabilir ve daha hızlı ve verimli kodlar yazabilirsiniz.