Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyemak Status Bit Tanpa Beralih atau Bertopeng?

Bagaimana untuk Menyemak Status Bit Tanpa Beralih atau Bertopeng?

Linda Hamilton
Linda Hamiltonasal
2024-11-26 11:37:18407semak imbas

How to Check a Bit's Status Without Shifting or Masking?

Mengesahkan Status Bit Tanpa Beralih atau Bertopeng

Apabila memanipulasi bit, selalunya perlu menyemak status bit tertentu dalam pembolehubah integer . Pertimbangkan contoh berikut:

int temp = 0x5E; // in binary 0b1011110

Kami ingin menentukan sama ada bit 3 dalam perwakilan binari temp ditetapkan kepada 1 atau 0.

Fungsi Terbina?

Timbul persoalan: adakah terdapat fungsi terbina dalam yang melaksanakan operasi ini tanpa menggunakan peralihan bit dan masking?

Makro Tersuai dalam C

Dalam C, tiada penyelesaian asli. Walau bagaimanapun, anda boleh mencipta makro untuk memudahkan proses:

#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))

di mana var ialah integer untuk diperiksa dan pos ialah kedudukan bit (0-diindeks, bermula dari bit paling kanan).

Untuk menyemak bit ke-3 dari hujung kanan:

CHECK_BIT(temp, 2)

Std::bitset dalam C

Dalam C , anda boleh memanfaatkan kelas std::bitset:

std::bitset<32> bits(temp);
if (bits.test(3)) {
  // Bit 3 is set
}

Di sini, bit mewakili perwakilan binari temp dan bits.test(3) menyemak nilai daripada bit ke-3.

Atas ialah kandungan terperinci Bagaimana untuk Menyemak Status Bit Tanpa Beralih atau Bertopeng?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn