CodeBlanks Logo Icon CodeBlanks

Bit maskeleme

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

Bit maskeleme ile bayrak yönetimini öğrenirsin.

Bit maskeleme

Bit maskeleme, bir değerin belirli bitlerini seçmek için bitsel VE (&) işlemidir. Maske, yalnızca ilgilenilen bitlerin 1 olduğu bir sayıdır.

Örnek: flags & 0x02 ifadesi, flags'in ikinci bitini sınar. Sonuç sıfırdan farklıysa bit açıktır; sıfırsa kapalıdır. 0x02 ikili olarak 00000010'dur; yalnızca ikinci bit 1'dir. Bu desen, donanım yazmaçlarını ve izin bayraklarını denetlemenin standart yoludur. Her bayrak ayrı bir bit ile temsil edilir; böylece tek bir tamsayı birçok durumu sıkıca saklar.

Bitsel VE ile koşul

Maske sonucunu bir if koşulunda kullanarak bitin durumuna göre dal seçebilirsin. Sıfırdan farklı sonuç "doğru", sıfır "yanlış" anlamına gelir.

Örnek: if (flags & mask) printf("açık\n"); else printf("kapalı\n");. Burada flags & mask sıfırdan farklıysa "açık", sıfırsa "kapalı" yazılır. C'de sıfırdan farklı her değer doğru kabul edilir; bu yüzden bitsel VE sonucunu doğrudan koşulda kullanabilirsin. Bu yapı, donanım sürücülerinde ve gömülü sistemlerde sürekli karşına çıkar; bir pini okumak veya bir bayrağı denetlemek için kullanılır.

Uygulama Bit maskeleme programı yaz

unsigned int flags = 0x0F; ve unsigned int mask = 0x02; tanımla. if (flags & mask) ile kontrol et; doğruysa printf("açık\n");, yanlışsa printf("kapalı\n"); yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// flags ve mask değişkenlerini tanımla
// bitsel VE ile kontrol et
// "açık" veya "kapalı" yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    unsigned int flags = 0x0F;
    unsigned int mask = 0x02;
    if (flags & mask) {
        printf("açık\n");
    } else {
        printf("kapalı\n");
    }
    return 0;
}

Beklenen çıktı

açık

Soru ve cevaplar

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

1 flags & 0x02 neyi sınar?

  • İkinci bitin açık olup olmadığını Doğru cevap
  • flags değerinin 2'ye eşitliğini
  • Toplam bit sayısını
  • İşaret bitini

Açıklama: 0x02 yalnızca ikinci biti 1 yapar; VE işlemi o biti sınar.

2 Bitsel VE koşulunu tamamla

Soru
if (flags & ____) printf("açık
");
Cevap
if (flags & mask) printf("açık
");

Açıklama: flags & mask ile maskelenen bit sınanır.

3 Maskeleme parçalarını eşle

Kavram Anlamı
& Bitsel VE
0x02 İkinci bit maskesi
flags Denetlenen değer
!= 0 Bit açık

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