Untitled
unknown
csharp
3 years ago
1.2 kB
32
Indexable
Never
/// <summary> /// Klasik yol ile verilen pozitif sayı ikinin tam kuvveti mi? /// </summary> static bool IsPowerOfTwo(int n) { if(n < 1) { return false; } while(n != 1) { if(n % 2 != 0) { return false; } n /= 2; } return true; } /// <summary> /// Bit manipülasyonu ile verilen pozitif sayı ikinin tam kuvveti mi? /// </summary> static bool IsPowerOfTwoBitwise(int n) { if (n < 1) { return false; } return (n & (n - 1)) == 0; //* 1: 0001 //* 2: 0010 //* 4: 0100 //* 8: 1000 // Hepsinde sadece 1 adet 1 biti var. // Bu nedenle sayının 1 eksiği ile bitwise AND işlemi yaparsak, hepsi sıfırlanır. // Ör: 8 sayısı için // 1000 (8) // 0111 (7) // & // 0000 }