สมมติว่าเรามีจำนวนเต็ม ต้องเช็คก่อนว่าเป็นกำลัง 4 หรือเปล่า
ดังนั้นหากอินพุตเท่ากับ 16 เอาต์พุตจะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ถ้า num <0 แล้ว −
-
คืนค่าเท็จ
-
-
ถ้า num &(num - 1) ไม่ใช่ศูนย์ ดังนั้น −
-
คืนค่าเท็จ
-
-
ถ้า (num &01010101010101010101010101010101) เป็นศูนย์ −
-
คืนค่าเท็จ
-
-
คืนความจริง
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
#include <bits/stdc++.h> using namespace std; class Solution { public: bool isPowerOfFour(int num){ if (num < 0) return false; if (num & (num - 1)) return false; if (!(num & 0x55555555)) return false; return true; } }; main(){ Solution ob; cout << (ob.isPowerOfFour(64)); }
อินพุต
64
ผลลัพธ์
1