Bit manipülasyonlar #3
unknown
csharp
5 years ago
1.7 kB
16
Indexable
/// <summary>
/// Programlamada Bit Manipülasyonları - 3. Bölüm
/// </summary>
class Program
{
static void Main(string[] args)
{
}
/// <summary>
/// Sayını kaç adet bitten oluştuğunu bulur.
/// </summary>
static int BitCount(int n)
{
var bitCount = 0;
while((1 << bitCount) <= n)
{
bitCount++;
}
return bitCount;
// Örn: n = 5, yani 101, bizim 1 sayısını 3 defa ötelersek 1000
// değerine, yani 5'ten büyük bir değer görüyoruz.
}
/// <summary>
/// Belirli bir pozisyondaki bit değerini getirir.
/// </summary>
static int GetBit(int n, int position)
{
return (n >> position) & 1;
// Ör: 11010 ve position = 3 olsun.
// Sağa shift ettiğimizde elimizde 11 değeri kalır.
// Bunu da 1 ile bitwise AND'lediğimizde,
// son bit eğer 1 ise 1, değilse 0 döndürür.
}
/// <summary>
/// Sayı çift mi?
/// </summary>
static bool IsEven(int n)
{
return (n & 1) == 0;
}
/// <summary>
/// Sayı pozitif mi?
/// </summary>
static bool IsPositive(int n)
{
if(n == 0)
{
return false;
}
return ((n >> 31) & 1) == 0;
// 31 adet shift ile most significant bit'i buluruz.
// Bu bit 0 ise pozitif, değilse negatiftir.
}Editor is loading...