Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ตรวจสอบกำลังของ 2 โดยใช้การดำเนินการระดับบิตใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับค่าตัวเลขและกำหนดว่าเป็นกำลังสองหรือไม่

ตัวอย่างเช่น −

f(23) = false
f(16) = true
f(1) = true
f(1024) = true

แนวทาง −

เลขยกกำลังสองในรูปแบบเลขฐานสองจะมีเพียงหนึ่งบิตเสมอ แบบนี้ −

1: 0001
2: 0010
4: 0100
8: 1000

ดังนั้น หลังจากตรวจสอบแล้วว่าตัวเลขนั้นมากกว่าศูนย์ เราสามารถใช้แฮ็คระดับบิตเพื่อทดสอบว่ามีการตั้งค่าบิตเดียวเท่านั้น ดังแสดงด้านล่าง −

num & (num - 1)

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

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