เราต้องเขียนฟังก์ชันตรวจสอบว่าตัวเลขเป็นกำลังของ 2 หรือไม่ โดยใช้ bitwise operation
หลักการ: กำลังของ 2 ในรูป binary จะมี bit 1 เพียงตัวเดียว (เช่น 1=0001, 2=0010, 4=0100, 8=1000) ดังนั้น num & (num - 1) จะเท่ากับ 0
ตัวอย่างโค้ด
const num1 = 256;
const num2 = 1024;
const isPowerOfTwo = (num = 1) => {
if (num < 1) { return false; }
return (num & (num - 1)) === 0;
};
console.log(isPowerOfTwo(num1));
console.log(isPowerOfTwo(num2));
console.log(isPowerOfTwo(1));
console.log(isPowerOfTwo(23));
ผลลัพธ์
ค่าที่แสดงในคอนโซลจะเป็นดังนี้:
true true true false