js 이진수 변환 / 각 자리 숫자 합

hyerin·2023년 4월 8일
0

1. 10진수를 n진수로 변환하는 법

toString()을 쓰면 10진수의 숫자를 쉽게 n진수로 변환할 수 있다.

//10진수를 2진수로 
number.toString(2);

//10진수를 8진수로
number.toString(8);

2.10진수가 아닌 숫자를 n진수로 변환하는 법

10진수가 아닌 숫자를 다른 숫자로 변환하기 위해서는 우선 10진수로 변환해야 한다.
toString()은 10진수만 쓸 수 있기 때문이다.
parseInt(number, n진수)는 n진수의 숫자를 10진수로 바꿔주는 기능을 한다. 이것을 통해 10진수로 변환한 후 toString()을 사용하면 된다.

//2진수를 8진수로 변환하기
parseInt(2진수숫자, 2).toString(8);

//8진수를 16진수로 변환하기
parseInt(8진수숫자, 8).toString(16);

3. 이진수 변환 함수(메서드 사용x)

위에 나온 메서드들을 쓰지 않고 10진수를 2진수로 변환하는 알고리즘을 짜보자.

let num = 16;
let arr = [];
let answer = '';
//num을 2로 나눈 나머지를 빈 배열에 넣는다.
//num은 2로 나눈 자기자신의 정수부분의 값으로 재할당한다.
//while문은 num이 0이 되어 false가 될때까지 반복한다.
while(num){
  arr.push(num % 2);
  num = parseInt(num/2,10)
}
//num이라는 값을 2로 나눈 나머지가 arr에 누적되서 들어갔다.
//처음은 2, 그 다음은 4, 그 다음은 8로 나눈 것과 동일하다.
//이진수는 나누는 순서와 반대이므로 reverse시킨다.
arr.reverse();
arr.forEach((e)=>{result += e})

4. 각 자리 숫자 합 구하기

각 자리 숫자 합을 구할 때 while문을 쓰면 굳이 arr를 만들지 않아도된다.

let number = 123;
let sum = 0; 
while(number != 0){
  sum += number % 10;
  number = Math.floor(number/10);
}

위의 3. 이진수 변환함수와 4. 각 자리 숫자의 합은 모두 while문으로 간단하게 구현했다. 두 문제의 공통점은 '같은 동작'을 '숫자가 끝날 때까지(0이 될때까지)'반복한다는 것이다.
이런 비슷한 기능을 구현할 때는 while문을 쓰자

profile
글쓰기의 시작은 나를 위해, 끝은 읽는 당신을 위해

0개의 댓글