이진수 변환 Binary Number

// 10진수 -> 2진수

1 -> 1
2 -> 10
3 -> 11
4 -> 100
5 -> 101
6 -> 110
7 -> 111
8 -> 1000
9 -> 1001
10 -> 1010

여러가지 숫자 체계가 있고 일반적으로 보는 숫자는 대체로 10진수이다. 컴퓨터는 로우레벨에서 이진수로 작동하는데 전기가 통함 (1) / 안통함 (0)을 표현하는 것이다.

어떻게 이진수로 변경해?

// 계속 몫이 0이 될 때까지 2로 나누고 남는 나머지를 모으면 이진수가 된다

10 / 2 = 5 ... 0
5 / 2 = 2 ... 1
2 / 2 = 1 ... 0
1 / 2 = 0 ... 1
function solution(target) {
    if (target === 0) return 0;
    
    let binary = '';
    
    while(target > 0) {
        binary = (target % 2) + binary; // 나머지
        target = Math.floor(target / 2); // 몫을 나눔
    }
    
    return binary;
}

반대로 이진수에서 10진수로 바꾸려면?

// 100 -> 4

0 -> 2^0 = 0
0 -> 2^1 = 0
1 -> 2^2 = 4

마지막 자리 수 부터 각 자리수에 해당하는 2 거듭제곱을 구해서 더하면 된다. 0인 경우 해당하지 않는 걸로 값은 0이고, 1인 경우 해당하기에 값이 있으므로 해당 자리수의 2의 거듭제곱의 값으로 계산하면 된다.

Last updated