Bit Manipülasyonları 2
unknown
csharp
5 years ago
1.7 kB
59
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...