/// <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
}