본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

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

avatar
yceffort
2020-07-24 · 3분
3min
2020year
KOoriginal
algorithm

기수법

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

1234=(1×103)+(2×102)+(3×101)+(3×100)1234 = (1 \times 10^3) + (2 \times 10^2) + (3 \times 10^1) + (3 \times 10^0)1234=(1×103)+(2×102)+(3×101)+(3×100)

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

1234(10)1234101234_{(10)} 1234_{10}1234(10)​123410​

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

11012=(1×23)+(1×22)+(1×21)+(1×20)=(8+4+0+1)13101101_{2} = (1 \times 2^3) + (1 \times 2^2) + (1 \times 2^1) + (1 \times 2^0) = ( 8 + 4 + 0 + 1) 13_{10}11012​=(1×23)+(1×22)+(1×21)+(1×20)=(8+4+0+1)1310​

이와 비슷하게, 16비트로 나타낼수 있는 수는 216−1=655362^{16} - 1 = 65536216−1=65536이다.

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

CAFE16=(12×163)+(10×162)+(15×161)+(14×160)=5196610CAFE_{16} = (12 \times 16^3) + (10 \times 16^2) + (15 \times 16^1) + (14 \times 16^0) = 51966_{10}CAFE16​=(12×163)+(10×162)+(15×161)+(14×160)=5196610​

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

2진수00000001001000110100010101100111
16진수01234567
2진수10001001101010111100110111101111
16진수89ABCDEF

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

1011 1110 1110 11112BEEF161011\space1110\space1110\space1111_{2} BEEF_{16}1011 1110 1110 11112​BEEF16​

거꾸로 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)

관련 글

  • #javascript#algorithm

    자바스크립트로 메모이제이션 구현하기

    까먹지 않게 기억해두기

    2020-11-23·1분
  • #algorithm

    프로그래머 기초 수학 2-3 - 유리수, 무리수, 실수

    유리수, 무리수, 실수

    2020-07-29·5분
  • #algorithm#mathematics

    프로그래머 기초 수학 2-1 - 정수

    정수

    2020-07-23·4분
  • #algorithm

    프로그래머 기초 수학 1-2 - 집합

    집합

    2020-07-17·5분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다. 발표·기술 자문·기고 문의는 이곳에서 받고 있습니다.

← Back to the blogIssue on GitHub →