CodeBlanks Logo Icon CodeBlanks

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

main.c
#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

main.c
#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

Soru
a ^= b; b ^= a; a ^= ____;
Cevap
a ^= b; b ^= a; a ^= b;

Açıklama: Üçüncü adımda a ^= b; ile a eski b değerini alır.

Orta seviye bölümündeki tüm dersler