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

Chuyển đổi một mảng số nhị phân thành số nguyên tương ứng trong JavaScript

Giả sử, chúng ta có một mảng Số chứa 0 và 1 -

const arr = [0, 1, 0, 1];

Chúng tôi bắt buộc phải viết một hàm Mảng, toBinary () trả về giá trị nhị phân tương ứng cho mảng mà nó được sử dụng với.

Ví dụ - Nếu mảng là -

const arr = [1, 0, 1, 1];

Sau đó, đầu ra phải là 11 vì biểu diễn thập phân của nhị phân 1011 là 11.

Do đó, hãy viết mã cho chức năng này.

Phương pháp 1:Sử dụng các phương thức thư viện

Trong JavaScript, tồn tại một phương thức parseInt (), nhận vào hai đối số đầu tiên là một chuỗi và thứ hai là một số đại diện cho một cơ sở cụ thể, như 10 cho cơ số thập phân, 2 cho nhị phân. Hàm này phân tích cú pháp đối số chuỗi và trả về một số nguyên của cơ số (cơ số) được chỉ định.

Trong trường hợp của chúng ta, để chuyển đổi mảng nhị phân sang thập phân, chúng ta có thể sử dụng hàm parseInt () likethis -

const arr = [1, 0, 1, 1];
const parseArray = arr => {
   const binaryString = arr.join("");
   return parseInt(binaryString, 2);
};
console.log(parseArray(arr));

Phương pháp 2:Giảm mảng

Trong phương pháp này, chúng tôi lặp lại mảng nhị phân và tạo một số thập phân dựa trên các số nhị phân tương ứng. Chúng tôi sẽ sử dụng toán tử dịch trái (<<) để dịch chuyển giá trị tích lũy sang trái mỗi lần một bit và trả về giá trị OR (|) theo chiều dọc của giá trị tích lũy đã dịch chuyển và giá trị hiện tại.

Mã cho việc này bằng cách sử dụng Bitwise Operator -

Ví dụ

const arr = [1, 0, 1, 1];
const parseArray = arr => {
   return arr.reduce((acc, val) => {
      return (acc << 1) | val;
   });
};
console.log(parseArray(arr));

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

11