0과 1밖에 모르는 컴퓨터가  어떻게 문자를 표현하고 이해할 수 있을까?

 

문자 집합과 인코딩

  • 문자 집합 (character set) : 컴퓨터가 이해할 수 있는 문자의 모음
  • 인코딩 (encoding) : 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
  • 디코딩 (decoding) : 0과 1로 표현된 문자 코드로 문자를 변환하는 과정

 

아스키 코드

  • 초창기 문자 집합 중 하나
  • 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자
  • 7비트로 하나의 문자 표현 (실제로는 8비트이지만 1비트는 오류 검출을 위해 사용되는 패리티 비트이다.)

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

 

아스키 코드

파일:attachment/1275273992_asciitable.gif 2열 이후의 코드들은 위키에서 사용할 수

namu.wiki

 

표를 보면 "A" 는 65로 인코딩, "a"는 97로 인코딩하는 것을 볼 수 있다.

 

아스키 코드는 간단한 인코딩만 가능하고, 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현이 불가능하다.

7비트로 하나의 문자를 표현하기 때문에 128개보다 많은 문자를 표현할 수 없다.

 

 

한글 인코딩 : 완성형 vs 조합형 인코딩

한글은 한글을 위한 인코딩이 필요하다. 알파벳을 이어 쓰면 단어가 되는 영어. 한글은 초성, 중성, 종성의 조합으로 이루어져있다.  그래서 2가지 인코딩 방식이 존재한다.

  • 완성형 인코딩 방식
  • 조합형 인코딩 방식

한글 인코딩 방식

 

EUC-KR 

  • KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식
  • 완성형 인코딩
  • 글자 하나 하나에 2바이트 크기의 코드를 부여(2바이트 ==  16비트 == 4자리 십육진수로 표현)
  • 2300여개의 한글 표현 가능
  • 여전히 모든 한글을 표현하기에는 부족한 수
  • 쀏, 뙠, 휔 같은 한글은 표현 불가능 (실제로 EUC-KR로 인코딩되어 피해를 본 피해자 존재)

EUC KR

직접 인코딩 해보기 

https://dencode.com/

 

DenCode | Encoding & Decoding Online Tools

Encoding and Decoding site. e.g. HTML Escape / URL Encoding / Base64 / MD5 / SHA-1 / CRC32 / and many other String, Number, DateTime, Color, Hash formats!

dencode.com

 

언어별로 인코딩을 국가마다 하게 되면 다국어를 지원하는 프로그램을 개발할 때엔 언어별 인코딩 방식을 모두 이해해야 한다.

 

언어별 인코딩

 

그렇다면 

 

"모든 언어, 특수문자까지 통일된 문자 집합을 사용하면 어떨까?"

"통일된 문자 집합 & 인코딩 방식이 있다면?"

 

 

유니코드 문자 집합과 UTF-8

 

유니코드

  • 통일된 문자 집합
  • 한글, 영어, 화살표와 같은 특수 문자, 심지어 이모티콘까지
  • 현재 문자 표현에 있어 매우 중요한 위치
  • 유니코드의 인코딩 방식 : UTF-8, UTF-16, UTF-32 ...

https://symbl.cc/en/unicode/blocks/

 

Unicode Blocks (◕‿◕) SYMBL

Unicode web service for character search. Find, copy and paste your favorite characters: 😎 Emoji, ❤ Hearts, 💲 Currencies, → Arrows, ★ Stars and many others 🚩

symbl.cc

 

 

UTF-8 인코딩

  • UTF(Unicode Transformation Format) == 유니코드 인코딩 방법
  • 가변 길이 인코딩 : 인코딩 결과가 1바이트 ~ 4바이트
  • 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다름

 

"한" 과 "글" 글자를 2진수로 표현하면 다음과 같다.

  • "한": D55C (== 1101 0101 0101 1100)
  • "글" : AE00 (== 1010 1110 0000 0000)

이걸 UTF-8로 인코딩 해보자.

  • "한": 11101101 10010101 10011100
  • "글" : 11101010 10111000 10000000

 

직접 인코딩 해보기

https://onlinetools.com/utf8/convert-utf8-to-binary

 

Convert UTF8 to Binary Bits

World's simplest online utility that converts UTF8 to binary. Free, quick, and powerful. Import UTF8 – get binary bits.

onlinetools.com

 

 

'컴퓨터구조와 운영체제' 카테고리의 다른 글

레지스터  (1) 2024.06.26
ALU와 제어장치  (1) 2024.06.25
소스 코드와 명령어  (0) 2024.06.24
0과 1로 숫자를 표현하는 방법  (0) 2024.06.20
컴퓨터 구조를 알아야 하는 이유  (0) 2024.06.19

컴퓨터는 0과 1로 모든 연산을 처리하는데 어떻게 많은 일들을 처리할 수 있을까?

 

정보 단위

비트(bit) : 0과 1을 표현하는 가장 작은 정보 단위 (=컴퓨터가 이해할 수 있는 가장 작은 정보 단위)

 

 

  • n비트로 2^n가지의 정보를 표현 가능하다.
  • 프로그램은 수많은 비트로 이루어져 있음
  • 비트보다 더 큰 단위가 존재한다. ex) 바이트, 킬로바이트, 메가바이트, 기가바이트 ...

정보의 단위

 

워드(word)

CPU가 한 번에 처리할 수 있는 정보의 크기 단위

  • 하프 워드(half word) : 워드의 절반 크기
  • 풀 워드(full word) : 워드 크기
  • 더블 워드(double word) :  워드의 두 배 크기

 

 

0과 1로 숫자를 표현하기

이진법(binary)

  • 0과 1로 수를 표현하는 방법
  • 숫자가 1을 넘어가는 시점에 자리올림
  • 우리가 일상적으로 사용하는 진법은 십진법(decimal)

십진법과 이진법

 

0과 1로 음수 표현하기 : 2의 보수

 - 어떤 수를 그보다 큰 2^n 에서 뺀 값(= 모든 0과 1을 뒤집고 1 더한 값)

2의 보수법

 

 

음수 두 번 구해보기

 

 

 

" -1011(2) 를 표현하기 위한 0101(2)과 십진수 5를 표현하기 위한 0101(2)는 똑같이 생겼는데 어떻게 구분할까?"

 

이것을 구분하기 위해 CPU 내부에는 플래그(flag) 레지스터가 존재한다.

플래그

 

 

십육진법

이진법으로는 숫자의 길이가 너무 길어진다. ex) 십진수 32 = 이진수 100000

그래서 컴퓨터의 데이터를 표현할 때 십육진법도 많이  사용한다. 수가 15를 넘어가는 시점에 자리올림을 한다.

 

16진법
2진수 -> 16진수 변환

 

16진수 -> 이진수 변환

 

'컴퓨터구조와 운영체제' 카테고리의 다른 글

레지스터  (1) 2024.06.26
ALU와 제어장치  (1) 2024.06.25
소스 코드와 명령어  (0) 2024.06.24
0과 1로 문자를 표현하는 방법  (1) 2024.06.21
컴퓨터 구조를 알아야 하는 이유  (0) 2024.06.19

프로그래밍 언어의 문법만 완벽하게 숙지한다면 좋은 개발자가 될 수 있지 않을까?

하지만 컴퓨터의 구조와 운영체제에 대해 알지 못한다면 나사가 빠진 개발자가 될 수 밖에 없다. 컴퓨터의 구조와 운영체제를 알아야 프로그래밍을 근본적으로 이해하고 다양한 문제를 쉽게 해결할 수 있는 능력을 가지게 되기 때문이다.

 

컴퓨터 구조와 운영체제를 알아야 하는 이유

  • 문제 해결 능력이 향상된다.
  • 프로그래밍 언어의 문법만으로는 알기 어려운 성능/용량/비용을 고려하여 개발할 수 있다.
  • 운영체제의 작동 원리를 이해하여 하드웨어와 프로그램을 더 깊이 이해하고 문제 해결의 실마리를 찾을 수 있다.

 

컴퓨터의 구조를 간략하게 살펴보면 아래와 같이 나타낼 수 있다.

컴퓨터의 구조

여기에서 컴퓨터가 이해하는 두 가지 정보 중 데이터

  • 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
  • 컴퓨터와 주고받는/내부에 저장된 정보를 데이터
  • 0과 1로 숫자를 표현하는 방법
  • 0과 1로 문자를 표현하는 방법

등을 데이터라고 부를 수 있다.

 

컴퓨터는 0과 1밖에 이해하지 못하는데 어떻게 숫자, 이미지, 동영상 같은 정보를 이해할 수 있을까?

 

컴퓨터가 이해하는 두 가지 정보중 명령어

  • 컴퓨터를 실질적으로 움직이는 정보
  • 데이터는 명령어를 위한 일종의 재료

라고 이해할 수 있다. ex) "1과 2를 더하라"

 

 

컴퓨터의 네 가지 핵심 부품

네 가지 핵심 부품

 

  1. CPU (중앙처리장치)
  2. 메모리 (RAM(하드웨어)) : 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
  3. 보조기억장치
  4. 입출력장치 (마우스, 키보드, 프린터 등등)

이 네 가지의 부품이 부착되어 모여있는 곳이 마더보드(=메인보드)이다.

 

 

메모리

  • 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다.
  • 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다.
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.

메모리는 주소를 갖는다.

 

 

CPU

CPU

 

CPU 내부에 있는 대표적인 장치 3가지

  • ALU : 계산기
  • 레지스터 : CPU 내부의 작은 저장장치
  • 제어장치 : 제어 신호(전기신호)를 내보내고, 명령어를 해석하는 장치

 

메모리에 있는 명령어를 CPU에서 처리한다고 생각하면 된다.

CPU에서 메모리 읽기

 

CPU에서 메모리 읽기(2)

 

CPU에서 읽은 메모리 처리

 

CPU에서 처리된 메모리 쓰기

 

  • CPU는 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치다.
  • CPU 내부에는 ALU, 레지스터, 제어장치가 있다. 

        *  ALU는 계산하는 장치

        *  레지스터는 임시 저장 장치

        *  제어장치는 제어 신호를 발생시키고 명령어를 해석하는 장치

 

 

보조기억장치

RAM같은 메모리는 비싸고, 전원이 꺼지면 저장된 내용을 잃는다. (=휘발성 저장장치) 그렇기 때문에 전원이 꺼져도 저장될 수 있는 저장 장치가 필요하게 되는데 이것이 보조기억장치이다.

 

메모리는 실행할 정보를 저장하고, 보조기억장치는 보관할 정보를 저장한다.

 

 

 

'컴퓨터구조와 운영체제' 카테고리의 다른 글

레지스터  (1) 2024.06.26
ALU와 제어장치  (1) 2024.06.25
소스 코드와 명령어  (0) 2024.06.24
0과 1로 문자를 표현하는 방법  (1) 2024.06.21
0과 1로 숫자를 표현하는 방법  (0) 2024.06.20

+ Recent posts