Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트에서 조건에 따라 10진수를 2진수 또는 16진수로 변환하는 방법

문제 상황

숫자 n을 매개변수로 받아 다음 조건에 따라 변환하는 자바스크립트 함수를 작성해야 합니다.

  • 숫자가 짝수이면 → 2진수(binary)로 변환
  • 숫자가 홀수이면 → 16진수(hexadecimal)로 변환

이 문제는 Number.prototype.toString() 메서드가 지원하는 진법(radix) 인자를 활용하면 아주 간단하게 해결할 수 있습니다. 핵심은 나머지 연산자(%)로 홀짝 여부를 판별한 뒤, 조건에 맞는 진법으로 변환하는 것입니다.

코드 예시

const num = 1457;

const conditionalConvert = (num = 1) => {
    const isEven = num % 2 === 0;
    const toBinary = () => num.toString(2);
    const toHexadecimal = () => num.toString(16);
    return isEven
        ? toBinary()
        : toHexadecimal();
};

console.log(conditionalConvert(num));

코드 동작 원리

  • isEven: 나머지 연산자(%)를 사용해 숫자를 2로 나눈 나머지가 0인지 확인함으로써 짝수 여부를 판별합니다.
  • toBinary(): toString(2)를 호출하여 숫자를 2진수 문자열로 변환합니다.
  • toHexadecimal(): toString(16)을 호출하여 숫자를 16진수 문자열로 변환합니다.
  • 삼항 연산자를 통해 isEven이 true이면 2진수 변환 결과를, false이면 16진수 변환 결과를 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

5b1

예시에서 사용한 숫자 1457은 홀수이므로 16진수로 변환되어 5b1이 출력됩니다. 만약 짝수(예: 10)를 입력했다면 2진수인 1010이 반환됩니다.

이처럼 toString() 메서드에 진법 값을 인자로 전달하면 별도의 변환 로직 없이도 2진수부터 36진수까지 손쉽게 변환할 수 있습니다.