0Pricing
C Academy · Pelajaran

Masker Bit dan Flag

Atur, hapus, dan balik bit.

Masker Bit dan Flag adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.

Bit sebagai Penanda

Satu bilangan bulat dapat menyimpan banyak pengaturan aktif/nonaktif, satu pengaturan untuk setiap bit. Setiap bit adalah sebuah penanda.

Teknik ini ringkas dan cepat, serta umum digunakan dalam sistem operasi dan kode tertanam.

#include <stdio.h>

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

Mendefinisikan Masker

Masker adalah nilai dengan bit-bit tertentu yang disetel. Definisikan setiap penanda sebagai pangkat dua agar menempati bitnya sendiri.

#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;
}

Menyetel Bit

Untuk mengaktifkan sebuah penanda, lakukan OR pada nilai dengan masker: flags |= MASK.

Bit yang sudah disetel akan tetap tersetel.

#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;
}

Menghapus Bit

Untuk menonaktifkan sebuah penanda, lakukan AND dengan masker terbalik: flags &= ~MASK.

Masker terbalik memiliki nilai 0 pada bit target dan nilai 1 di semua posisi lainnya.

#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;
}

Membalik Bit

Untuk membalik sebuah penanda, lakukan XOR dengan masker: flags ^= MASK.

Jika sebelumnya aktif, penanda akan menjadi nonaktif, dan sebaliknya.

#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;
}

Memeriksa Bit

Untuk memeriksa apakah sebuah penanda aktif, lakukan AND dengan masker dan uji hasilnya: flags & MASK bernilai bukan nol jika bit tersebut disetel.

#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;
}

Menyetel Beberapa Penanda

Gabungkan beberapa masker dengan OR untuk menyetel beberapa penanda sekaligus.

#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;
}

Memeriksa Beberapa Sekaligus

Untuk menguji apakah semua penanda dalam suatu kelompok telah disetel, lakukan AND dengan masker gabungan dan bandingkan hasilnya dengan masker itu sendiri.

#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;
}

Mencetak Penanda Aktif

Ulangi seluruh masker Anda untuk melaporkan penanda mana yang sedang aktif.

#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;
}

Menghitung Bit yang Disetel

Untuk mengetahui jumlah penanda yang aktif, hitung bit yang disetel dengan berulang kali menghapus bit tersetel yang paling rendah.

#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;
}

Enum untuk Penanda

Menggunakan enum membuat definisi penanda tetap teratur dan mudah dibaca.

#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;
}

Pemeriksaan Cepat

Uji pengetahuan Anda tentang masker dan penanda.

Rangkuman

Anda telah mempelajari cara mengelola penanda bit:

  • Setel dengan flags |= MASK.
  • Hapus dengan flags &= ~MASK.
  • Balik dengan flags ^= MASK.
  • Uji dengan flags & MASK.
  • Definisikan masker sebagai pangkat dua, sering kali menggunakan makro atau enum.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Masker Bit dan Flag” gratis?

Ya — teks lengkap “Masker Bit dan Flag” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Masker Bit dan Flag”?

Atur, hapus, dan balik bit. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C Academy?

Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Masker Bit dan Flag” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?

Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Operator Bitwise
  2. Pergeseran
  3. Masker Bit dan Flag
  4. Trik Bit Praktis
← Kembali ke C Academy