진법 변환 (2진법 ‐ 16진법 전환 || 2진법 ‐ 10진법 전환) 이경훈‐202510043 - aksrud/3kingOfGod GitHub Wiki
진법이란?
수를 표기하는 기수 법 중 하나로 수가 높아짐에 따라 자릿수도 함께 커지는 특징이 있다. ex) 10진법은 0-9까지 10가지, 16진법은 0-9와A-F까지 16가지 등등 진법 앞에 붙은 숫자의 심볼의 갯수로 수를 표현한다
2진법 <-> 10진법 전환
2진법을 10진법으로 변환
각 진법에서 숫자는 해당 기수(자릿수)의 거듭 제곱을 이용해 표현 할 수 있으므로 2진법으로 1011(2)는 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 11 ,즉 1011(2) = 11인것이다.
10진법을 2진법으로 변환
1.) 위에 2진법을 10진법으로 변환하는 원리와 비슷하게 10진법의 숫자는 2의 거듭 제곱의 합으로 표현 할 수 있기 때문에 뒤에서 부터 1, 2, 4, 8, 16, 32으로 2배씩 커지는 수를 자릿수로 생각하여 끼워 맞추면 가능하다. ex) 15 = 8 + 4 + 2 + 1 = 1 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0 = 1111(2)로 15는 2진법으로 1111이다
2.) 1번의 방법으로 끼워 맞추면 123456789같은 수는 끼워 맞추기가 힘들기 때문에 10진법의 숫자를 2씩 나누고 그 몫과 나머지를 기록하면서 몫이 1이 될 때까지(0이면 안 나눠도 됨) 계속 나누기를 반복하고 나머지를 과거 순으로 따라 가면 그 값이 2진법으로 표현된 수이다. ex) 19 / 2 = 9 ... 1, 9 / 2 = 4 ... 1, 4 / 2 = 2 ... 0, 2 / 2 = 1 ... 0, 1 / 2 = 0 ... 1 여기서 끝이고 1이 된 몫과 나머지를 과거 순으로 따라가면 1, 0, 0, 1, 1 즉 19는 2진법으로 10011이다.
2진법 <-> 16진법 전환
이 작업은 다행이 굉장히 쉽다. 16은 2의 4승이므로 16진법을 2진법으로 나타낼려면 16진법의 한 자릿수를 2진법의 세 자릿수로 나타내면 된다. ex) 3F(F는 10진수로 15이다)을 2진수로 나타내면 3은 0011, F는 1111이므로 ,3F는 2진수로 00111111이다.
반대로 2진수를 16진수로 나타내는 것도 2진수의 4자릿수를 묶어 16진수의 한 자릿수로 표현하면 된다. ex) 11011010(2)는 1101은 D(10진법으로 13) 1010은 A(10진법으로 10)즉 저 2진수는 16진수로 DA(16)이다.
번외 8진수
8진수도 다른 진수와 변환이 가능하다. 8은 2의 3승이기에 2진수와 서로 변환하려면 3단위씩 묶으면 되고, 16진수로 변환하려면 우선 2진수로 변환했다가 2번쨰 방법으로 16진수로 바꾸면 된다. 10진수로도 바꾸려면 각 자릿수를 8의 거듭제곱으로 나타내어 모두 더하면 그게 10진수이다.
느낀점
진법은 단지 수를 표현하기 위한 도구이고 수가 어떠한 진수로 변환 되던지간에 그 숫자에 본질은 변하지 않는다. 컴퓨터는 연산의 편의를 의해 2진법은 쓰는 것이고 인간은 편의를 위해 10진법 혹은 16진법을 쓴다. 최근 양자컴퓨팅에서는 0과 1의 중첩인 상태를 표현하기위해 3진법을 쓰기도 한다. 우리는 컴퓨터를 다루는 사람으로써 비트 연산과 논리 회로, 컴퓨터가 이해하는 상태인 바이너리(2진법)과 색상코드, 네트워크 패킷 등등 다양한 진법 표현등을 배워야 할 필요가 있다.