Chúng ta cần viết hàm nhận số và xác định xem nó có phải lũy thừa của 2 hay không.
Ví dụ - f(23)=false, f(16)=true, f(1)=true, f(1024)=true.
Cách tiếp cận - Lũy thừa của 2 trong nhị phân luôn chỉ có 1 bit: 1=0001, 2=0010, 4=0100, 8=1000. Sau khi kiểm tra số >0, dùng thủ thuật bitwise: num & (num - 1) === 0.
Ví dụ
Code sau đây:
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));Kết quả
Kết quả trên console:
true true true false