컴퓨터는 우리 일상에서 많은 도움을 주고있습니다. 하지만 사실 컴퓨터는 0과 1만을 익식하며 표현하는 아주 단순한 기계입니다.
컴퓨터와 사람의 언어는 다르기 때문에 0과 1로 소통하기 위한 2진법에 대해서 공부했습니다.
위키에서는 이진수을 아래와 같이 명시해 놓고 있습니다.
"관습적으로 0과 1의 기호를 쓰며 이들로 이루어진 수를 이진수라고 한다."
사람은 10진수를 사용하며 0, 1, 2....9 으로 표현이 가능하지만 컴퓨터는 위에 말한것과 같이 간단한 논리구조로 0과 1을 사용합니다.
컴퓨터의 0과 1을 2진수로 표현이 가능하고 10진수로 변형하여 읽을 수 있습니다.
| 10진수 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 2진수 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 |
1은 0001이 추가되며 2는 1 + 1 = 0으로 0010으로 표현할 수 있습니다.
위에 테이블을 보면 규칙을 찾을 수 있는데 2n마다 자릿수가 올라가며 2, 4, 8, 16만 기억한다면 쉽게 이해가 가능합니다.
10진수는 사람이 제일 많이 사용하고 이해할 수 있는 표현방법으로 0부터 9까지의 숫자로 되어있습니다.
10진수를 2진수로 변형하는것은 매우 간단합니다.
10진수를 2로 나누고 나머지와 마지막 숫자를 뒤집으면 2진수로 변형할 수 있습니다.
| 10진수 | 나머지 |
|---|---|
| 116 | |
| 58 | 0 |
| 29 | 0 |
| 14 | 1 |
| 7 | 0 |
| 3 | 1 |
| 1 | 1 |
0010111을 뒤집으면 1110100로 이진수로 변형이 가능하며 2진수로 계산해보았을때 64 + 32 + 16 + 4 = 116로 확인이 가능합니다
8진법은 0부터 7까지의 숫자로 표현하는 방식입니다
8진수는 23로 오른쪽 끝에서부터 연속되는 3자리 숫자를 묶음으로써 2진법으로 변형하여 만들 수 있습니다.
앞의 빈자리는 0으로 채워서 계산합니다.
| 2진수 | 010101 | 010111 | 001011 |
|---|---|---|---|
| 8진수 | 25 | 27 | 13 |
| 10진수 | 21 | 23 | 11 |
2는 2진수로 010 5는 101이며 010101로 표현이 가능합니다.
10진수를 8진수로 표현하는 방법은 2진수와 유사하며 8로 나눠서 나머지와 마지막 숫자를 계산하여 쉽게 구할 수 있습니다.
| 10진수 | 나머지 |
|---|---|
| 21 | 5 |
| 2 |
8진수를 10진법으로 변형하는 방법은 자릿수를 따로따로 계산합니다.
| 8진수 | 2 | 5 |
|---|---|---|
| 8n | 81 | 80 |
| 10진수 | 16 | 5 |
(2 * 8) + (5) = 21
8진수, 16진수는 2진수의 가독성 향상을 위한 툴로서 2진수와 다를 게 없습니다. 로마숫자로 표현이 가능한것은 0 ~ 9까지 이기 떄문에 10 ~ 15는 A ~ F로 표현 할 수 있습니다.
16진수는 개발을하게 되면 나도 모르게 생각보다 많이 접할 수 있습니다.
예시로 CSS color를 설정하면 #432FC2과 같은 것을 확인할 수 있는데 이것이 16진수로 이루어진 hexadecimal(hex) 입니다.
16진수는 24로 오른쪽 끝에서부터 연속되는 4자리 숫자를 묶음으로써 2진법으로 변형하여 만들 수 있습니다.
| 10진수 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
|---|---|---|---|---|---|---|---|---|---|
| 2진수 | 01010 | 01011 | 01100 | 01101 | 01110 | 01111 | 10000 | 10001 | 10010 |
| 16진수 | A | B | C | D | E | F | 10 | 11 | 12 |
16진수는 10 ~ 15는 A ~ F로 표기하는 방법만 다를뿐 2진수와 8진수와 똑같은 방법으로 10진수를 16진수로 변형이 가능합니다.
| 10진수 | 나머지 |
|---|---|
| 255 | 15(F) |
| 15(F) |
16진수를 10진법으로 변형하는 방법은 자릿수를 따로따로 계산합니다.
| 16진수 | F | F |
|---|---|---|
| 16n | 161 | 160 |
| 10진수 | 240 | 15 |
(15(F) * 16) + (15) = 255
2진수와 10진수, 8진수, 16진수에 대해서 정리해봤습니다.
개발을하면서 여러곳에서 2진수와 16진수와 같은 표현을 한번씩 만날수 있는데 bit byte를 이해하고 메모리와 컴퓨터를 이해하는데 있어서 도움이 될거같습니다.