Chapter 02-1 | 0과 로 숫자를 표현하는 방법
정보 단위
컴퓨터가 이해하는 가장 작은 정보 단위 -> 0과 1을 나타내는 가장 작은 정보 단위를 비트라고 합니다.
ex. 전구 한 개로 (꺼짐) 혹은 (켜짐), 두 가지 상태를 표현할 수 있듯, 1비트는 0 또는 1, 두 가지 정보를 표현할 수 있습니다.
이진수의 음수 표현
십진수 음수를 표현할 땐 단순히 숫자 앞에 마이너스 부호를 붙이면 그만입니다.
-1, -3, -5 .. 이런 식으로요. 이진수는 그렇지 않습니다. 0과 1만으로 음수를 표현해야 합니다.
음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법입니다.
2의 보수는 '모든 0과 1을 뒤집고, 거기에 1을 더한 값'으로 이해하면 됩니다.
-1011(2)을 표현하기 위한 음수로서의 0101(2) 과 십진수 5를 표현하기 위한 양수로서의 0101(2)은 똑같이 생겼는데, 이진수만 보고 이게 음수인지 양수인지 어떻게 구분하는가?
-> 실제로 이진수만 봐서도 이게 음수인지 양수인지 구분하기 어렵다. 그래서 컴퓨터 내부에서 어떤 수를 다룰 때는 구분하고자 플래그를 사용합니다. 쉽게 말해 부가 정보입니다.
2의 보수 표현이 완벽한 방식은 아니다! 0과 2^n 형태의 이진수에는 원하는 음수값을 얻을 수 없다.
즉, n비트로는 -2^n, +2^n을 구분할 수 없다는 뜻.
16진법
이진법은 0과 1만으로 모든 숫자를 표현하다보니 숫자의 길이가 너무 길어진다는 단점이 있습니다.
그래서 데이터를 표현할 때 이진법 이외에 십육진법도 자주 사용합니다.
십진수, A, B, C, D, E, F로 표기합니다. 이진수에 비해 더 적은 자릿수로 더 많은 정보를 표현할 수 있습니다.
표현하는 법 1) 숫자(16) - 아래첨자, 수학적 표기방식 , 2) 숫자 앞에 0xㄹ를 붙여 구분합니다. , 코드상 표기 방식
십육진수를 이진수로 변환하기
십육진수를 이루는 숫자 하나를 이진수로 표현하려면 4비트가 필요합니다.
십육진수 한 글자를 4비트의 이진수로 간주하는 법.
즉, 16진수를 이루고 있는 각 글자를 따로따로 (4개의 숫자로 구성된) 이진수로 변환하고, 그것들을 그대로 이어 붙이면 십육진수가 이진수로 변환됩니다.
이진수를 십육진수로 변환하기
이진수 숫자를 네 개씩 끊고, 끊어 준 네 개의 숫자를 하나의 십육진수로 변환한 뒤 그대로 이어붙이면 됩니다.
Chapter 02-2 | 0과 1로 숫자를 표현하는 방법
0과 1로 문자를 표현하는 방법, 즉 컴퓨터가 문자를 이해하고 표현하는 다양한 방법에 대해 알아보겠습니다.
문자 집합과 인코딩
반드시 알아야 할 세 가지 용어 : 1) 문자 집합, 2) 인코딩, 3) 디코딩
문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음, 컴퓨터는 문자 집합에 속해 있는 문자를 이해할 수 있고 속해 있지 않다면 이해할 수 없습니다.
그렇다고 속했다고 해서 바로 이해할 수 있는 건 아니다. 문자를 0과 1로 변환해야 비로소 컴퓨터가 이해할 수 있습니다.
이 변환 과정을 문자 인코딩 이라 합니다.
인코딩 후 0과 1로 이루어진 결과 값이 문자 코드가 됩니다. 같은 문자 집합에 대해서도 다양한 인코딩 방법이 있을 수 있습니다.
문자 디코딩 : 인코딩의 반대 과정, 즉 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정
컴퓨터(0과 1로 이루어져 있는 값) <= 인코딩 <= 문자
컴퓨터(0과 1로 이루어져 있는 값) => 디코딩 => 문자
아스키 코드
초창기 문자 집합 중 하나로, 영여 알파벳과 아라비아 숫자, 그리고 일부 특수 ㅜㄴ자를 포함합니다. 각각 7비트로 표현되며, 총 128개의 문자를 표현할 수 있습니다.
EUC-KR
한글 인코딩을 이해하려면 한글의 특수성을 알아야 합니다. 알파벳을 쭉 이어 쓰면 단어가 되는 영어와는 달리, 한글은 음절 하나하나가 초성, 중성, 종성의 조합으로 이루어져 있습니다. 그래서완성형 인코딩 방식, 조합형 인코딩 방식이 존재합니다. 따라서 EUC-KR은 문자 집합을 기반으로 하는 대표적인 완성형 인코딩 방식입니다. ㄱ초, 중, 종성이 모두 결합된 한글 단어에 2바이트 크기의 코드를 부여합니다.
유니코드와 UTF-8
인코딩 덕분에 한국어를 코드로 표현할 수 있게 되었습니다. 하지만 모든 한글을 표현할 수 없다는 한계가 있었ㅅ브니다. 인코딩을 나라마다 해야한다면 다국어를 지원하는 프로그램을 만들 때 각 나라 언어의 인코딩을 모두 알아야 하는 번거로움이 있습니다.
그래서 등장한 것이 유니코드 문자 집합입니다. 유니코드는 EUC-KR 보다 훨씬 다양한 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표나 이모티콘까지도 코드로 표현할 수 있는 통일된 문자 집합입니다.
아스키 코드나 EUC-KR은 글자에 부여된 값을 그대로 인코딩 값으로 삼은 반면, 유니코드는 족므 다릅니다.
부여된 값 자체를 인코딩 값으로 삼지 않고 이 값을 다양한 방법으로 인코딩 합니다.
UTF-8, UTF-16 등등 있으며, 가장 대중적인 UTF-8 을 주로 사용합니다.
'취준' 카테고리의 다른 글
[컴퓨터 구조] Chapter 3-2 명령어의 구조 (0) | 2024.04.22 |
---|---|
[컴퓨터 구조] Chapter 03. 소스 코드와 명령어 (0) | 2024.04.22 |
[운영체제] Chapter 01. 컴퓨터 구조 시작하기 (0) | 2024.04.17 |
[혼자 공부하는 컴퓨터구조, 운영체제] Chapter 1. 컴퓨터 구조 시작하기 (0) | 2024.04.16 |
[2024-03-10] TIL (0) | 2024.03.10 |