C++ dersleri bit işlemlerinde bit kopyalama konusundayız, bit kopyalamaktan kastımız nedir bir kaynak bitimiz var onun değerini alıyoruz, hedef bitimize yazıyoruz : 0 ise 0, 1 ise 1:
int main() { int source = 5; int target = 3; int number = 0b00100100; // 36 number ^= (-source ^ number) & (1LL << target); // 0010 1100 // target bitini source bitiyle aynı yapar. cout << "result=" << number << endl; }
result=44 çıktısını alıyoruz.
işlem yapacağımız değer 36 'ydı 5. bitin değerini 3. bite yazınca 44 olmuş oldu. Sırasıyla işlemlerimize bakmamız gerekirse: değişenlerin değerlerini yerine yazarak devam edelim :
number = 36 ^ (-5 ^ 36) & (1 << 3);
1 << 3 : 0000 1000b değerini elde ettik,
-5 ^ 36 : 1111 1011 ^ 0010 0100 -> 1101 1111b elde ettik,
bu iki değeri & liyoruz : 0000 1000b & 1101 1111b -> 0000 1000 elde ettik,
son olarak da 36 ile üst satırda elde ettiğimiz değeri Xor luyoruz:
0010 0100b ^ 0000 1000 -> 0010 1100 değeri de 44 e eşit
finalde olan 36 : 0010 0100b 0010 1100b 5. indekste olan biti 2. indekse yazdırmış olduk.
Herkese kolay gelsin!
Önceki konu : C/C++ Bit Set ve Bit Clear
Sonraki konu : Bit Alanları - Gömülü Sistemler Bellek Organizasyonu