All Articles

프로그래머 기초 수학 2-2 - 기수법

기수법

우리가 흔히 사용하는 숫자 1234는 다음과 같이 표현할 수 있다.

여기 나오는 10처럼 그 거듭 제곱으로 자리의 값을 취하는 숫자를 이라고 하고, 체계의 이름은 진법이라는 말을 붙인다. 즉 저 숫자는 10진법으로 나타낸 수다. 어떤 진법을 썼는지 나타내기 위해서는 밑에 작게 표현한다

이와 비슷하게, 0과 1로만 표현되어 있는 숫자는 2진법이라고 한다. 2진법은 논리적으로 참과 거짓에 대응 되며, 이는 전기 신호로 1, 0을 표현하는 컴퓨터의 기본체계를 이룬다.

이와 비슷하게, 16비트로 나타낼수 있는 수는 이다.

2진법과 더불어 컴퓨터 과학분야에서 많이 쓰이는 것이 16진법이다. 16진법은 0~9와 더불어 A, B, C, D, E, F 를 사용하여 숫자를 표현한다. 각각 10, 11, 12, 13, 14, 15를 나타낸다.

근데 왜 하필 16진수가 널리 쓰이게 된것일까? 그것은 2진수를 인간이 좀더 보기 쉬운 형태 ()로 바꾼 것이 기 때문이다. 이는 정확하게 4비트를 나타낸다.

2진수 0000 0001 0010 0011 0100 0101 0110 0111
16진수 0 1 2 3 4 5 6 7
2진수 1000 1001 1010 1011 1100 1101 1110 1111
16진수 8 9 A B C D E F

0과 1을 나열한 것은 바로 알아보기 쉽지 않지만, 이를 네개씩 묶어서 표현할 수 있다.

거꾸로 10진수를 다른 진법으로 나타내기 위해서는, 해당 10진법 숫자를 변환을 원하는 밑으로 나누어서 표현하면 된다.

코드 구현

var dec = 123; 
var hex = dec.toString(16); // 변환을 원하는 밑을 넣는다.
var bin = dec.toString(2);

var hex = "7b"; 
var dec = parseInt(hex, 16) // 해당숫자의 밑을 넣는다.
var bin = dec.toString(2)