Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 이진수 배열을 해당 정수로 변환

<시간/>

0과 1 −

를 포함하는 숫자 배열이 있다고 가정해 보겠습니다.
const arr = [0, 1, 0, 1];

사용되는 배열에 해당하는 바이너리를 반환하는 배열 함수 toBinary()를 작성해야 합니다.

예를 들어 - 배열이 -

인 경우
const arr = [1, 0, 1, 1];

그러면 2진수 1011의 10진수 표현이 11이기 때문에 출력은 11이어야 합니다.

따라서 이 함수에 대한 코드를 작성해 보겠습니다.

방법 1:라이브러리 방법 사용

JavaScript에는 두 개의 인수를 취하는 parseInt() 메서드가 있습니다. 첫 번째는 문자열이고 두 번째는 특정 기수를 나타내는 숫자입니다(예:10진수 기수 10, 이진수 2). 이 함수는 문자열 인수를 구문 분석하고 정수를 반환합니다. 지정된 기수(기수).

우리의 경우 바이너리 배열을 10진수로 변환하기 위해 다음과 같이 parseInt() 함수를 사용할 수 있습니다 -

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

방법 2:배열 줄이기

이 방법에서 우리는 이진 배열을 반복하고 해당 이진수를 기반으로 10진수를 구성합니다. 왼쪽 시프트 연산자(<<)를 사용하여 매번 누적값을 1비트 왼쪽으로 이동하고 이동된 누적값과 현재 값의 비트별 OR(|)을 반환합니다.

Bitwise Operator −

를 사용하는 이에 대한 코드

예시

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

출력

콘솔의 출력은 다음과 같습니다. -

11