CodeBlanks Logo Icon CodeBlanks

Bit ayarlama ve temizleme

  • C kursu
  • Orta seviye
  • Ders 101/116
  • 5 dk

Belirli bitleri ayarlamayı ve temizlemeyi öğrenirsin.

Bit ayarlama ve temizleme

Bir biti açmak için bitsel VEYA (|=), kapatmak için bitsel VE ile değil (&= ~) kullanırsın. Değiştirmek için ise XOR (^=) kullanılır.

Örnek: flags |= 0x01; birinci biti açar. flags &= ~0x01; birinci biti kapatır; ~0x01 tüm bitleri 1 yapıp birinci biti 0 yapar. flags ^= 0x01; birinci bitin durumunu tersine çevirir. Bu üç işlem, bit bayraklarını yönetmenin temelidir. Her bit bağımsızdır; birini değiştirmek diğerlerini etkilemez. Bu yüzden tek bir tamsayı içinde birçok bayrağı sıkıca saklayabilirsin.

Çoklu bit yönetimi

Birden çok biti aynı anda yönetmek için maskeleri birleştirirsin. Bitsel VEYA ile maskeleri toplayarak tek bir işlemde birkaç biti açabilirsin.

Örnek: flags |= 0x01; flags |= 0x04; birinci ve üçüncü bitleri açar. Bu işlemlerden sonra flags değeri 5 olur (ikili 00000101). Daha sonra flags &= ~0x01; ile birinci biti kapatırsan; flags 4 kalır (ikili 00000100). Her işlem yalnızca ilgili biti değiştirir; diğerleri korunur. Bu, izin sistemlerinde ve durum makinelerinde yaygın bir desendir.

Uygulama Bit ayarla ve temizle

unsigned int flags = 0x00; tanımla. flags |= 0x01; ve flags |= 0x04; ile bit aç. printf("%u\n", flags); yazdır. flags &= ~0x01; ile bit kapat. printf("%u\n", flags); yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// flags değişkenini 0 olarak tanımla
// iki bit aç ve yazdır
// bir bit kapat ve yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    unsigned int flags = 0x00;
    flags |= 0x01;
    flags |= 0x04;
    printf("%u\n", flags);
    flags &= ~0x01;
    printf("%u\n", flags);
    return 0;
}

Beklenen çıktı

5
4

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bit işlemlerini eşle

Kavram Anlamı
|= Bit aç
&= ~ Bit kapat
^= Bit ters çevir
& Bit sına

2 flags &= ~0x01 ne yapar?

  • Değeri 1 yapar
  • Tüm bitleri sıfırlar
  • Birinci biti açar
  • Birinci biti kapatır Doğru cevap

Açıklama: &= ~0x01 birinci biti 0 yapar; diğerleri korunur.

3 Bit temizleme ifadesini tamamla

Soru
flags &= ~____;
Cevap
flags &= ~0x01;

Açıklama: flags &= ~0x01; birinci biti kapatır.

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