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
#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
#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
if (flags & ____) printf("açık
");
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 |