0Pricing
C Academy · Ders

Bit Maskeleri ve Bayraklar

Bitleri ayarlayın, temizleyin ve değiştirin

Bit Maskeleri ve Bayraklar, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.

Bayrak Olarak Bitler

Tek bir tamsayı, her bit için bir tane olmak üzere birçok açık/kapalı ayarı saklayabilir. Her bit bir bayraktır.

Bu yöntem, işletim sistemlerinde ve gömülü kodlarda yaygın olarak kullanılan, bellek açısından verimli ve hızlı bir yöntemdir.

#include <stdio.h>

int main(void) {
    unsigned flags = 0;
    printf("Initial flags = %u\n", flags);
    return 0;
}

Maskeleri Tanımlama

Maske, belirli bitleri ayarlanmış bir değerdir. Her bayrağı ikinin kuvveti olarak tanımlayın; böylece her bayrak kendine ait biti kaplar.

#include <stdio.h>

#define READ  (1u << 0)
#define WRITE (1u << 1)
#define EXEC  (1u << 2)

int main(void) {
    printf("READ=%u WRITE=%u EXEC=%u\n", READ, WRITE, EXEC);
    return 0;
}

Bit Ayarlama

Bir bayrağı açmak için değeri maskeyle OR işlemine tabi tutun: flags |= MASK.

Zaten ayarlanmış bitler ayarlanmış olarak kalır.

#include <stdio.h>
#define READ (1u << 0)
#define WRITE (1u << 1)

int main(void) {
    unsigned flags = 0;
    flags |= READ;
    flags |= WRITE;
    printf("flags = %u\n", flags);
    return 0;
}

Bit Temizleme

Bir bayrağı kapatmak için terslenmiş maskeyle AND işlemi yapın: flags &= ~MASK.

Terslenmiş maskede hedef bitte 0, diğer tüm bitlerde 1 bulunur.

#include <stdio.h>
#define READ (1u << 0)
#define WRITE (1u << 1)

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

Bit Değiştirme

Bir bayrağı tersine çevirmek için maskeyle XOR işlemi yapın: flags ^= MASK.

Bayrak açıksa kapanır, kapalıysa açılır.

#include <stdio.h>
#define EXEC (1u << 2)

int main(void) {
    unsigned flags = 0;
    flags ^= EXEC;
    printf("after toggle: %u\n", flags);
    flags ^= EXEC;
    printf("after toggle: %u\n", flags);
    return 0;
}

Bit Denetleme

Bir bayrağın açık olup olmadığını denetlemek için maskeyle AND işlemi yapın ve sonucu sınayın: flags & MASK, bayrak ayarlanmışsa sıfırdan farklıdır.

#include <stdio.h>
#define READ (1u << 0)
#define WRITE (1u << 1)

int main(void) {
    unsigned flags = READ;
    if (flags & READ)  printf("READ is on\n");
    if (flags & WRITE) printf("WRITE is on\n");
    else printf("WRITE is off\n");
    return 0;
}

Birden Çok Bayrak Ayarlama

Birkaç bayrağı aynı anda ayarlamak için maskeleri OR ile birleştirin.

#include <stdio.h>
#define READ (1u << 0)
#define WRITE (1u << 1)
#define EXEC (1u << 2)

int main(void) {
    unsigned flags = READ | WRITE | EXEC;
    printf("all set: %u\n", flags);
    return 0;
}

Birden Fazlasını Aynı Anda Denetleme

Bir grubun tüm bayraklarının ayarlanmış olduğunu sınamak için birleşik maskeyle AND işlemi yapın ve sonucu maskenin kendisiyle karşılaştırın.

#include <stdio.h>
#define READ (1u << 0)
#define WRITE (1u << 1)

int main(void) {
    unsigned flags = READ | WRITE;
    unsigned need = READ | WRITE;
    if ((flags & need) == need) printf("both present\n");
    return 0;
}

Etkin Bayrakları Yazdırma

Şu anda açık olan bayrakları bildirmek için maskeleriniz üzerinde döngü kurun.

#include <stdio.h>
#define READ (1u << 0)
#define WRITE (1u << 1)
#define EXEC (1u << 2)

int main(void) {
    unsigned flags = READ | EXEC;
    if (flags & READ)  printf("R");
    if (flags & WRITE) printf("W");
    if (flags & EXEC)  printf("X");
    printf("\n");
    return 0;
}

Ayarlanmış Bitleri Sayma

Kaç bayrağın açık olduğunu öğrenmek için en düşük ayarlanmış biti art arda temizleyerek ayarlanmış bitleri sayın.

#include <stdio.h>

int main(void) {
    unsigned v = 0b10110;
    int count = 0;
    while (v) {
        v &= (v - 1);
        count++;
    }
    printf("set bits = %d\n", count);
    return 0;
}

Bayraklar için Numaralandırmalar

enum kullanmak, bayrak tanımlarını düzenli ve okunabilir tutar.

#include <stdio.h>

enum { OPT_A = 1, OPT_B = 2, OPT_C = 4 };

int main(void) {
    unsigned opts = OPT_A | OPT_C;
    printf("opts = %u\n", opts);
    if (opts & OPT_C) printf("C enabled\n");
    return 0;
}

Hızlı Kontrol

Maskeler ve bayraklar hakkındaki bilginizi sınayın.

Özet

Bit bayraklarını yönetmeyi öğrendiniz:

  • flags |= MASK ile ayarlayın.
  • flags &= ~MASK ile temizleyin.
  • flags ^= MASK ile değiştirin.
  • flags & MASK ile sınayın.
  • Maskeleri, genellikle makrolar veya numaralandırmalar kullanarak, ikinin kuvvetleri olarak tanımlayın.

Sıkça Sorulan Sorular

“Bit Maskeleri ve Bayraklar” dersi ücretsiz mi?

Evet — “Bit Maskeleri ve Bayraklar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.

“Bit Maskeleri ve Bayraklar” dersinde ne öğreneceğim?

Bitleri ayarlayın, temizleyin ve değiştirin C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Bit Maskeleri ve Bayraklar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bit Düzeyi İşleçler
  2. Kaydırmalar
  3. Bit Maskeleri ve Bayraklar
  4. Pratik Bit Teknikleri
← C Academy Sayfasına Dön