Rumah >pembangunan bahagian belakang >C++ >Adakah nombor kuasa 2? Pendekatan bitwise
Berdasarkan sama ada beberapa nombor adalah 2 memerlukan algoritma yang cekap dan tepat. Artikel ini memperkenalkan algoritma berdasarkan operasi bit:
Algoritma ini menggunakan kedudukan dan simbol operasi (&), yang membandingkan perwakilan binari nombor operasi. Khususnya, ia memeriksa sama ada nombor input adalah sifar selepas hasil pengurangan 1 dan hasil penurunan. Jika nombor adalah kuasa 2, kecuali tahap terendah dual -proof, selebihnya adalah 0. Operasi tolak 1 akan menjadikan tahap terendah hingga 0, supaya semua bit kecuali kedudukan terendah akan menjadi 0. Jika nombor input adalah kuasa 2, hasil pengiraan akan menjadi sifar.
<code class="language-c++">bool IsPowerOfTwo(unsigned long long x) { return (x != 0) && ((x & (x - 1)) == 0); }</code>
Sebagai contoh, pertimbangkan nombor 4, ia adalah kuasa 2. Perduaan 4 diwakili oleh 100. Minus 1 mendapat 3, dan binarinya dinyatakan sebagai 011.100 dan 011 hasil kedudukan dan operasi adalah 000. Kerana hasilnya adalah sifar, ia disahkan bahawa 4 adalah kuasa 2.
Algoritma ini mempunyai kecekapan pengiraan yang tinggi, dan menyediakan kaedah yang boleh dipercayai untuk memeriksa sama ada nombor yang diberikan adalah kuasa 2 (kecuali 0). Jika sifar diperlukan, anda hanya perlu menambah pemeriksaan bukan -zero yang mudah, seperti yang ditunjukkan dalam baris pertama serpihan kod.
Atas ialah kandungan terperinci Adakah nombor kuasa 2? Pendekatan bitwise. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!