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!