Bit hack'leri
- C kursu
- Orta seviye
- Ders 103/116
- 5 dk
Hızlı bit hack'leri ve numaralarını öğrenirsin.
XOR ile takas
İki değişkenin değerini geçici değişken olmadan takas etmek için üç XOR işlemi kullanılır. Bu, XOR takası olarak bilinir.
Örnek: a ^= b; b ^= a; a ^= b;. Üç adımdan sonra a ve b değerleri yer değiştirir. İlk adımda a, a ^ b olur. İkinci adımda b, eski a değerini alır. Üçüncü adımda a, eski b değerini alır. Bu teknik havalı olsa da modern işlemcilerde geçici değişkenle takas daha hızlıdır; XOR takası daha çok ezber ve gömülü sistemlerde kullanılır.
Ternary ile min
Bitsel işlemler sıklıkla ternary işleciyle (?:) birleştirilir. Bu, tek satırda koşullu değer atamanın kısa yoludur.
Örnek: int min = (a < b) ? a : b;. Burada a < b doğruysa min a olur, yanlışsa b olur. Bu, if-else yazmaktan daha kısadır. Bit hack'leriyle birlikte kullanıldığında güçlü bir araçtır; örneğin XOR takasından sonra küçük değeri bulmak için tek satır yeter. Ternary, özellikle makro tanımlarında ve ifade bağlamında koşullu değer üretmek için idealdir.
Uygulama XOR takas ve min yaz
int a = 7, b = 3; tanımla. a ^= b; b ^= a; a ^= b; ile değerleri takas et. printf("a=%d b=%d\n", a, b); yazdır. int min = (a < b) ? a : b; hesapla. printf("min=%d\n", min); yazdır.
Başlangıç kodu
#include <stdio.h>
// a=7 ve b=3 tanımla
// XOR ile takas yap
// değerleri yazdır
// ternary ile min hesapla ve yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
int main(void) {
int a = 7, b = 3;
a ^= b; b ^= a; a ^= b;
printf("a=%d b=%d\n", a, b);
int min = (a < b) ? a : b;
printf("min=%d\n", min);
return 0;
}Beklenen çıktı
a=3 b=7 min=3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 XOR takası kaç adımda yapılır?
- Bir
- İki
- Üç Doğru cevap
- Dört
Açıklama: XOR takası üç ^= işlemiyle yapılır.
2 Bit hack'lerini eşle
| Kavram | Anlamı |
|---|---|
a ^= b |
XOR takas adımı |
(a<b)?a:b |
Küçük değer |
^ |
Bitsel XOR |
?: |
Ternary |
3 XOR takasını tamamla
a ^= b; b ^= a; a ^= ____;
a ^= b; b ^= a; a ^= b;
Açıklama: Üçüncü adımda a ^= b; ile a eski b değerini alır.