본문 바로가기

computer science

[#혼공] 혼자 공부하는 컴퓨터 구조+운영체제 [Chapter.02]

많은 사람들은 이미 "컴퓨터는 0,1 밖에 못 읽어"라는 말을 들어보셨을 겁니다. 근데 어떻게 3+4라는 연산을 처리할 수 있을까요? 그리고 영어나 한글도 자유롭게 처리하고 있습니다. 챕터 2에서는 컴퓨터가 이해하는 정보 단위를 학습하고 이진법 그리고 십육진법을 통한 다양한 방식을 확인해 볼 수 있습니다. 종종, 처리한 csv나 엑셀 파일이 사용자의 환경에서 접근할 때, 한글이 깨지는 현상이 발생합니다. 그럴때, 인코딩을 변환을 하여 저장해주거나, csv나 엑셀에서 제공하는 설정에서 변환하기도 합니다. 왜 한글 문자가 다소 이상한 특수문자와 숫자의 조합으로 깨져서 보이지? 라는 궁금증을 해결 할 수 있는 좋은 정보를 책에서 제공합니다. 

 

 

 

[02-01] 0과 1로 숫자를 표현하는 방법 

 

정보 단위

 

비트 : 컴퓨터가 이해하는 가장 작은 정보 단위입니다. 비트는 0,1 두 가지 정보를 표현할 수 있습니다. 2비트는 (0,0) (0,1) (1,0) (1,1)을 표현할 수 있습니다. 즉, n비트는 2^n(2의 n승) 만큼의 정보를 표현할 수 있게 됩니다.

 

바이트 : 여덟개의 비트를 묶은 단위입니다. 즉 2^8(256)개의 정보를 표현할 수 있습니다.

 

1킬로바이트 : 1바이트 * 1,000개 

 

1메가바이트 : 1킬로바이트 * 1,000개 

 

1기가바이트 : 1메가바이트 * 1,000개

 

1테라바이트 : 1기가바이트 * 1,000개

 

 

 

 

이진법

 

십진수 이진수
1 1
2 1 0 
3 1 1 
4 1 0 0 
5 1 0 1
6 1 1 0 

이처럼, 십진수를 이진수로 변환할 수 있습니다. 보통, 표기를 101(2)로 표현할 수 있습니다.

즉, 십진수 101은 백일이고, 101(2)는 5가 됩니다.

 

또한, 이진수의 음수 표현은 기존 이진수의 각 자리의 0,1을 모두 반대로 뒤집어주고 마지막에 1을 더하면 됩니다. 

즉, 11의 경우 01이 됩니다.

 

마지막으로, 이진법은 큰 숫자를 다루기 위해서 사용해야하는 자리가 그만큼 길어지기 때문에, 16진수를 활용하기도 합니다.

예를 들면, 65라는 숫자를 이진수에서는 "1000001"로 표현하지만 16진수에서는 "41"로 표현할 수 있기 때문에, 같은 정보를 더 작은 용량으로 표현이 가능하게 됩니다. 

 

 

 

 

 

[02-02] 0과 1로 문자를 표현하는 방법 

 

아스키 코드

 

초창기 문자 집합 중 하나로, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수 문자를 포함합니다. 하지만, 한글을 표현할 수 없는 단점이 있습니다. 

 

https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C

 

 

 

 

유니코드

 

유니코드는 다양한 한글을 포함하고, 대부분의 나라의 문자, 특수문자, 화살표, 이모티콘까지 코드로 표현할 수 있습니다. 현대 문자를 표현할 때 가장 많이 사용하는 표준 문자 집합입니다. 자세한 차트는 http://www.unicode.org/charts/에서 참고하시면 됩니다.

또한, 유니코드에서의 인코딩 방법은 UTF-8, UTF-16, UTF-32 등이 있고, UTF-8이 가장 대중적으로 사용됩니다. 

 

핵심적인 부분만 간추린다면, 

문자 집합은 컴퓨터가 인식할수 있는 문자의 모음으로, 문자 집합에 속한 문자를 인코딩하여 0,1로 표현할 수 있습니다. 

아스키 문자 집합에 0부터 127까지의 수가 할당되어 아스키 코드로 인코딩 됩니다.

유니코드는 여러 나라의 문자들을 광범위하게 표현할 수 있는 통일된 문자 집합입니다. 

 

더 자세하고 구체적으로 컴퓨터가 어떻게 다양한 숫자와 문자를 표현하는지 알고 싶으시다면, [혼자 공부하는 컴퓨터 구조+운영체제] 도서를 구매하시길 추천합니다. :)