컴퓨터와 이진법 (16진법)
0과 1
흔히 컴퓨터는 정보를 이진법으로 표현한다는 말을 들었을 것입니다.
이진수를 쉽게 살펴보기위해서 우리가 흔히 쓰는 10진법을 다시 볼 필요가 있습니다.
10진법
10진법의 개념은 0~9까지의 숫자만 사용해서 모든 수를 표현하는 것입니다.
우선 0부터 9까지를 세어보면 0,1,2,3 ... ,9 까지 표현할 수 있습니다.
9다음의 숫자는 어떻게 표현할까?
우리는 너무나 익숙해서 10인 것을 알 수 있지만 만약 3진법 , 16진법 이런 진법에서도 사용될 수 있는 규칙을 찾아야됩니다.
규칙은 바로 다음 숫자를 더이상 0~9의 수로 표현할 수 없을 때는 자릿수를 올려준다는 것입니다.
99가 되었을 때도 마찬가지 입니다. 자릿수를 올려주면서 100이 되는 것입니다.
그리고 자연스럽게 10진법으로 숫자를 표현할 때 자릿수로 나누어서 생각할 수 있게됩니다.
1234를 표현하면??
$1234 = 10^3 + 10^2 + 10^1 + 10^0$
이렇게 자릿수로 나누어서 생각할 수 있습니다.
2진법
그러면 다시 2진수로 넘어가면 2진법으로도 모든 수를 표현할 수 있습니다.
2진법는 이제 0과 1만 쓸 수 있는 진법입니다.
이진법의 표현식을 살펴보자면 ...
$1111 = 2^3+2^2+2^1+2^0$
$1110 = 2^3+2^2+2^1+0\times2^0$
$1100 = 2^3+2^2+0\times2^1+0\times2^0$
10진법과 똑같이 더이상 표현할 수 없을만큼 커졌을 때 자릿수를 올리는 개념입니다.
16진법
코딩을 공부하다보면 숫자를 10진수나 2진수 대신 **16진수(Hexadecimal)**로 표현하는 경우가 많습니다. 아마 CSS를 했다면 혹은 그저 색상코드를 본적 있다면 16진수를 이미 경험한 것입니다.
(16진수는 16진수를 구별하기 위해 앞에 0x를 적습니다. 2진법은 0b를 씁니다.)
같은 논리라면 0~16까지 표현할 수 있어야하는데
만약 15(10진법)을 16진법에서 그대로 0x15(16진법) 이라고 표현하면 문제가 생깁니다.
왜냐하면 더이상 16미만의 숫자로 표현하지 못할 때 자릿수를 올리면서 그 문제를 해결했는데
ox15를 사용하게 되면 최대자릿수가 2인 수가 되어버립니다.
따라서,,, 16진법은 9까지는 10진법으로 쓰고 10부터 15까지는 대문자는 A,B,C,D,E,F 로 표현합니다.
컴퓨터에서 데이터를 처리하기 위해 16진수를 사용할 때 장점이 있는데 16진수를 사용하면 10진수보다 2진수를 더 간단히 표현할 수 있습니다. 16진수를 사용하면 10진수보다 2진수를 간단하게 나타낼 수 있습니다.
2진법의 4자리는 16진법의 한자리와 일대일 대응합니다.
255를 2진법 표현을 보다 짧은 형태로 표현할 수 있는 것이 16진법입니다.
컴퓨터는 8개의 비트가 모인 바이트 단위로 정보를 표현합니다. 2개의 16진수는 1byte의 2진수로 변환되기 때문에 정보를 표현하기 매우 유용합니다.
하지만 중요한 것은 컴퓨터에서 16진법은 2진법을 간소화한 표현일뿐, 2진법으로 읽고 해석합니다.
본글은 모두를 위한 컴퓨터 과학 CS50을 참고해서 만들었습니다.
www.boostcourse.org/cs112/lecture/119027?isDesc=false