정보처리기사 진법 변환을 공부하다 문득 든생각

애초에 뭔 진법이 이렇게 많냐 이거 왜쓰는거야?

10진수

우리의 손가락을 열개다

그 덕분에 우리는 숫자를 0부터 9까지 쉽게 셀 수 있다

이게 우리가 십진수를 쓰게 된 유래다

2진수

컴퓨터는 0과1로만 이루어져있다

는 사실을 알고는 있지만 컴퓨터로 0123456789 텍스트를 치면 다 나오는데

근본적으로 0과 1로 변환되어야 할 이유는 무엇일까

컴퓨터가 데이터를 보는 방법이 그 이유다

컴퓨터는 전압을 올리거나 내리는 방식으로 데이터를 표현한다

전압이 있을 때는 1, 없을 때는 0으로 표시하는 방식이 가장 간단하고 안정적이다

이렇게 그래프 상으로는 전류가 끊긴 것 같지만

사실은 이런식으로 되어있는 형태이다

 

그리고 각각의 자릿수를 Bit 비트 라고 한다

즉, 1 bit 로 표현할 수 있는것은 참, 거짓 딱 두가지이다

 

여기서 2비트로 늘리면 표현할수 있는 가지수는 2의 2승으로 4가지로 늘어난다 (0부터 3)

4비트는 2의 4승으로 16가지의 표현이 가능하다 (0부터 15)

8비트는 2의 8승으로 256가지의 표현이 가능하다 (0부터 255)

 

컴퓨터는 이 8비트를 데이터가 저장되는 최소 단위로 삼기로 했다

4개로 나뉘어진 비트의 단위를 Nibble이라하며, 앞4비트와 뒤4비트가 합쳐진 8비트를 1Byte 라고 한다

1 byte = 8bits
           = 2nibble ( 4bits : 4bits)
           = 2 ^ 8 = 256 (0~255)

16진수

앞서 4비트는 16가지의 표현이 가능하다 했다

기존의 10진수로는 0부터 9까지 한자리수로 표현이 가능한데, 10이상의 숫자까지 한자리로 표현할 수가 없었다. 여기서 16진수가 등장한다

10이상의 숫자가 나오면 10 = a, 11 = b, 12 = c, 13 = d, 14 = e, 15 = f 이렇게 알파벳으로 표현하게 되었다

예를 들어, 10진수 255는 2진수로 11111111, 16진수로는 FF로 표현된다

왜 굳이 다양한 진법을 사용할까?

16진수를 사용하면 큰 수를 더 간결하고 알아보기 쉽게 표현할 수 있기 때문에 메모리 주소, 색상 코드, 파일 형식 등에서 자주 사용된다

2진수는 컴퓨터 내부에서 데이터를 처리하는 데 필수적이지만, 사람이 직접 읽고 쓰기에는 불편하다

그래서 8진수16진수처럼 더 큰 단위를 사용해 데이터를 간단히 표현할 수 있다

특히 16진수는 4비트 단위를 깔끔하게 나눌 수 있어 데이터의 경계를 명확히 볼 수 있다

8bits = 1 byte : C언어로 char
16bits = 2 byte : C언어로 short int
32bits = 4 byte : C언어로 int
64bits = 8 byte : C언어로 long int

더 큰 단위 또한 있다

1 byte
1000 byte = 1 Kbyte (10^3)
1000 Kyte = 1 Mbyte (10^6)
1000 Myte = 1 Gbyte (10^9)
1000 Gyte = 1 Tbyte (10^12)

8진수

8진수는 2진수보다 더 짧고 간결하게 데이터를 표현할 수 있는 방법이다

예를 들어, 3비트0부터 7까지 8개의 값을 표현할 수 있다

8진수는 예전 컴퓨터 시스템에서 메모리나 데이터 표현을 단순화하기 위해 자주 사용되었다

 

정리하자면 진법이 다양한 이유는 결국 컴퓨터의 효율성사람의 편의성을 동시에 만족시키기 위해서라고 볼 수 있겠다

 

참고 자료

https://youtu.be/lZKej5s3T_w?si=Da7ZiAMwnwQFkbcg

+ Recent posts