İçeriğe atla
ΣDSA Patterns
Menü
Dil

Bit Manipülasyonu

Rehber 6 / 6 · Yol 6 / 6

Etkileşimli

Zihinsel model

Bu problem için animasyonlu çözüm. Adımları kaydır veya boşlukla duraklat; değişmezi yüksek sesle yeniden anlat.

Adım 1 / 6
0
1
1

a=011 b=001

3+1 yalnızca bitlerle topla. XOR elde olmadan toplam; (a&b)<<1 elde.

Demo önizleme: Bu çözümler otomatik test paketini geçiyor ama insan tarafından incelenmedi. Trade-off ve yazıları taslak olarak değerlendirin.

Sum of Two Integers

Problem (yeniden ifade)

a+b’yi + veya - operatörleri kullanmadan döndür.

Sezgi

a^b taşımasız toplamdır; (a&b)<<1 taşıma. Taşıma 0 olana dek yinele.

Yaklaşımlar

XOR + carry döngüsü

Doğrulanmadı
Zaman O(1) 32-bitAlan O(1)

Fikir. Bitler üzerinde full-adder simülasyonu. Python negatifler için 32-bit mask ister.

Yürüyüş. 1+2 → 3; -1+1 → 0.

Trade-off. Üretimde yerleşik + yeter; problem bir bit-op alıştırması.

Çözüm
export function getSum(a: number, b: number): number {
  while (b !== 0) {
    const carry = (a & b) << 1;
    a = a ^ b;
    b = carry;
  }
  // JS bitwise is 32-bit signed already for |0
  return a | 0;
}
export function getSum(a: number, b: number): number {
  while (b !== 0) {
    const carry = (a & b) << 1;
    a = a ^ b;
    b = carry;
  }
  // JS bitwise is 32-bit signed already for |0
  return a | 0;
}

Şablon bağlantısı

Bitsel aritmetik simülasyonu.

Yansıma