Bit Manipülasyonları 2
unknown
csharp
4 years ago
1.7 kB
47
Indexable
/// <summary> /// Belirli bir biti tersine çevirme /// </summary> static int FlipBit(int x, int position) { int mask = 1 << position; return x ^ mask; // x = 6 yani 110 ve position 1 diyelim. // mask 10 olur. // 110 // 010 // ^ // 100 yani 4 olur. } /// <summary> /// Sayıyı 2 ile çarpma veya bölme /// </summary> static int DivideOrMultipleByTwo(int n) { return n >> 1; // return n << 1; // 16 yani 10000 için, 1000 yani 8 döndürür. // 15 yani 1111 için, 111 yani 7 döndürür. } /// <summary> /// Belirli pozisyondaki bitin set edilip edilmedini bulur. /// </summary> static bool IsBitSet(int n, int position) { n >>= position; return (n & 1) != 0; // Ör: n = 12 yani 1100 diyelim. position 1 olsun. // ilk satırdan sonra 110 olur. // // 110 // 001 // & // 000 olur, 0 elde ediyorsak o bit set edilmemiş (0) demektir. } /// <summary> /// Verilen karakterin alfabedeki yerini bulur. /// </summary> static int LetterPositionInAlphabet(char c) { return c & 31; // A --> 65 --> 1000001 // b --> 98 --> 1100010 // 1100010 // 0011111 --> 31 // & // 0000010 yani 2. harf olduğu bilgisin döner. }
Editor is loading...