C++ Dersleri | Bit İşlemleri - Bit Kopyalama

 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


Yorumlar

Bu blogdaki popüler yayınlar

Arduino DHT11 Kullanımı - Arduino Kod - Arduino Termometre yapımı

Arduino ile voltaj okuma | Arduino ile voltmetre | Arduino ADC örnek Kod

Arduino Oled Ekran Kullanımı | SSD1306 Detaylı Tüm Fonksiyonlar

Arduino 16x2 (2x16) LCD Ekran Kullanımı | 4bit parallel mode - 16x2 LCD ekran pin bağlantıları

Arduino ile Yüksek Voltaj Ölçme | SMPS DC Bara Ölçümü

Arduino UNO güç özellikleri

Arduino LM35 Sıcaklık Sensörü İle Sıcaklık Ölçme

16x2 Lcd Türkçe Karakter Sorunu Çözüldü! Arduino LCD ekrana yazı yazma - Arduino 16x2 Lcd ekran kullanımı

Arduino Röle Modül Kullanımı

DMD2TUR | Arduino P10 Led Panel için Türkçe Karakter Desteği | Arduino P10 Led panel Türkçe yazı yazma