프로그래밍/컴퓨터구조 및 운영체제

Window/Mac 한글 깨지는 오류 원인 - 컴퓨터가 숫자와 문자를 표현하는 방법

gameObject 2023. 10. 9. 14:28
728x90

숫자를 표현하는 방법

1. 정보 단위

- 최소 단위로는 비트(bit)가 있다.

- 1비트로는 0과 1을 표현할수 있으므로 2가지를 표현할 수 있다.

- 2비트로는 4가지, 3비트로는 8가지, 즉 2의 제곱으로 표현범위가 늘어난다.

- 1byte = 8 bit

- 1KB = 1000byte

- 1MB = 1000KB

- 1GB = 1000MB

- 1TB = 1000GB

 

* 1024개씩 묶게되면 KiB / MiB / GiB 이렇게 부른다.

 

2. word (워드)

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

- 하프워드 / 풀 워드 / 더블 워드 라는 용어도 있다.

 

3. 0과 1로 음수를 표현할때는 2의 보수법을 사용한다.

= 어떤 수를 그보다 큰 2n에서 뺀 값이다.

[2진수]

11을 음수로 표현하면 01이 된다.

11보다 큰 2n은 100 이므로 100 - 11 을 하게되면 01이 된다.

OR

모든 0과 1을 뒤집고 1을 더하면 된다.

11 -> 00 -> 01 이 된다.

 

* - 1110을 표현하기 위한 0010과 십진수 2를 표현하기 위한 0010은 똑같이 생겼는데 어떻게 구분하나?

-> 이것을 구분짓기 위해 CPU 내부에 특별한 레지스터가 있다. "플래그 레지스터"

-> 모든 숫자는 플래그값을 들고다닌다고 한다.

 

4. 16진법

- 이진법으로는 숫자의 길이가 너무 길어진다.

- 컴퓨터의 데이터를 표현할 때 16진법도 많이 사용한다.

- 15(16) 수학적 표기 방식 / ox15 코드상 표기 방식

- 이진수 <-> 16진수 변환 방식이 매우 간단하여 사용한다.

 


문자를 표현하는 방법

1. 문자 집합(Character set)

- 컴퓨터가 이해할 수 있는 문자의 모음이다.

2. 인코딩(encoding)

- 코드화 하는 과정(문자화 이외에도 사용되곤 한다. 압축 or 암호화)

- 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정이다.

3. 디코딩(decoding)

- 코드를 사람이 읽을 수 있도록 해석하는 과정이다.

- 0과 1로 표현된 문자코드를 문자로 변환하는 과정이다.

 

4. 대표적 문자집합

1) 아스키 코드

- 초창기 문자 집합 중 하나이다.

- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어문자를 표현할 수 있다.

- 7비트로 하나의 문자를 표현(8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트이다.)

- 128개 보다 많은 문자를 표현할 수 가 없다.

 

따라서 언어별 인코딩 방식이 생기게 되었다.

 

2) 한글 인코딩 (완성형 vs 조합형 인코딩)

- 한글은 초성, 중성, 종성의 조합으로 이루어져있어서 완성형과 조합형 인코딩이 생겼다.

- 완성형 : 배 / 경 / 택 마다 코드 포인트를 주는것

- 조합형 : 초성 / 중성 / 종성 마다 코드포인트를 주는것

- ex) 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

 

3) 모든 언어, 특수문자까지 통일된 문자집합

 3-1) 유니코드

- 통일된 문자 집합이다.

- 한글, 영어, 화살표 같은 특수문자, 이모티콘까지

- 현대 문자 표현에 있어 매우 중요한 위치에 있다.

- 유니코드의 인코딩 방식에는 utf-8 / utf-16 / utf-32 등이 있다.

- 유니코드의 코드포인트 : U+16진수 4자리 숫자

- 유니코드 문자집합 확인 -> https://unicode-table.com/en/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

  3-2) utf-8 (가장 대중적) 

- UTF(Unicode Transformation Format) : 유니코드 인코딩 방법이다.

- 가변 길이 인코딩 방식이다.( 인코딩 결과가 1바이트 ~ 4바이트)

- 유니코드에 부여된 값에 따라 인코딩 결과가 몇 바이트가 될지 결정된다.

 

** 윈도우와 맥이 같이 일하게 되면 한글이 깨지곤 하는데 그 이유가 인코딩 방식에 있다.

윈도우에서는 기본적으로 utf-8이 아닌 다른 방식으로 한글을 인코딩하고 있고

맥 에서는 기본적으로 utf-8 방식으로 인코딩을 하고있기 때문에

윈도우 컴퓨터의 인코딩 방식을 utf-8로 변경해주면 오류가 해결된다.

 

협업시 주석이 깨져서 곤란한 상황이 생기는것을 막을 수 있다.

728x90