Easybit-manipulation
Power of Two
Problem (yeniden ifade)
n ikinin kuvvetiyse true döndür (tam olarak bir biti set olan pozitif tamsayı).
Sezgi
İkinin kuvvetleri 1,2,4,8… Böyle bir n’nin en düşük set bitini temizlemek 0 verir: n & (n-1) == 0 ve n > 0.
Yaklaşımlar
n & (n-1) == 0
DoğrulanmadıZaman O(1)Alan O(1)
Fikir. Pozitif olmayanı reddet. Tek satırlık bit hilesi.
Yürüyüş. 16 → true; 3 → false; 0 → false.
Trade-off. Log döngüsü de çalışır; bit kontrolü O(1).
Çözüm
export function isPowerOfTwo(n: number): boolean {
return n > 0 && (n & (n - 1)) === 0;
}
export function isPowerOfTwo(n: number): boolean {
return n > 0 && (n & (n - 1)) === 0;
}
Şablon bağlantısı
Bit hileleri: en düşük set biti temizleme.
Yansıma
n > 0ven & (n-1) == 0. Açık tam bir bit.- 0 ve negatif false. 1 true,
2**0. - İki bit açıksa
n-1o bitleri silmez, AND sıfır olmaz.