Computer >> Máy Tính >  >> Lập trình >> Javascript

Kiểm tra sức mạnh của 2 bằng cách sử dụng các hoạt động bitwise trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một số và xác định xem nó có phải là lũy thừa của hai hay không.

Ví dụ -

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

Phương pháp tiếp cận -

Quyền hạn của hai ở dạng nhị phân luôn chỉ có một bit. Như thế này -

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

Do đó, sau khi kiểm tra rằng số lớn hơn 0, chúng ta có thể sử dụng phương pháp hack bitwise để kiểm tra số đó và chỉ một bit được đặt. Tương tự được hiển thị bên dưới -

num & (num - 1)

Ví dụ

Sau đây là mã -

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));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

true
true
true
false