Bit manipülasyonlar #3
unknown
csharp
4 years ago
1.7 kB
12
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...