Bit Manipülasyonları - 1. Kısım
unknown
csharp
3 years ago
1.7 kB
21
Indexable
Never
/// <summary> /// Verilen sayı 2'nin bir tam kuvveti mi? /// </summary> static bool IsPowerOfTwo(int i) { return i > 0 && (i & (i - 1)) == 0; // 2 --> 10 // 4 --> 100 // 8 --> 1000 ve 7 --> 0111 // 1000 // 0111 // & // 0000 } /// <summary> /// Verilen iki değeri değiştirme /// </summary> static void Swap(int a, int b) { a ^= b; b ^= a; a ^= b; // a --> 11 ve b --> 10 // a ^= b; sonrası a -> 01 // b ^= a; sonrası b -> 11 // a ^= b; sonrası a -> 10 } /// <summary> /// İstediğimiz pozisyondaki bit'i 1 yapar. /// </summary> static int SetBit(int x, int position) { int mask = 1 << position; return x | mask; // position 1, x = 5 yani 101 olsun. // mask 10 olur. // // 101 // 010 // | // 111 yani 7 değerini verir. } /// <summary> /// İstediğimiz pozisyondaki bit'i 0 yapar /// </summary> static int ClearBit(int x, int position) { int mask = 1 << position; return x & ~mask; // position 1, x = 7 yani 111 olsun. // mask 010 olur. // ~mask tüm bitleri tersine çevirerk 101 yapar. // // 111 // 101 // & // 101 yani 5 değerini verir. }