CS/컴퓨터 구조

데이터

2023. 3. 20. 13:44
목차
  1. 0과 1로 숫자를 표현하는 방법
  2. 정보 단위
  3. 이진법: 0과 1로 숫자 표현하기
  4. 0과 1로 음수 표현하기 : 2의 보수
  5. 십육 진법
  6. 이진수 -> 십육 진수 변환
  7. 0과 1로 문자를 표현하는 방법
  8. 문자 집합과 인코딩
  9. 아스키코드
  10. 한글 인코딩 : 완성형 vs 조합형 인코딩
  11. 유니코드 문자 집합과 utf-8

0과 1로 숫자를 표현하는 방법

정보 단위

비트(bit) : 0과 1을 표현하는 가장 작은 정보 단위

1비트
좌:2비트 우:3비트

 

  • n비트로 2n가지의 정보 표현 가능
  • 프로그램은 수많은 비트로 이루어져 있음
  • 다만, 평소 "이 파일은 8,920,120 비트야"라고 표현하진 않음
  • 비트보다 더 큰 단위를 사용
    • 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트...

 

(이전 단위를 1024개씩 묶은 단위는 kiB, MiB, GiB 등으로 따로 존재한다.)

 

  • 워드(word)
    • CPU가 한 번에 처리할 수 있는 정보의 크기 단위
    • 하프 워드(half word) : 워드의 절반 크기
    • 풀 워드(full word) : 워드 크기
    • 더블 워드(double word) : 워드의 두 배 크기

 

 

이진법: 0과 1로 숫자 표현하기

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

 

 

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

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

조금 더 쉽게 구하려면

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

 

음수 두 번 구해보기

 

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

 

플래그(flag)

 

십육 진법

  • 이진법으로는 숫자의 길이가 너무 길어진다
    • 십진수 32 == 이진수 100000
  • 그래서 컴퓨터의 데이터를 표현할 때 십육 진법도 많이 사용
    • 수가 15를 넘어가는 시점에 자리올림

 

직접 코드에 써넣는 사례도 많다.

 

이진수 -> 십육 진수 변환

십육 진수를 사용하는 이유는 이진수와의 변환이 쉽기 때문이다.

 

 

 

0과 1로 문자를 표현하는 방법

문자 집합과 인코딩

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

 

아스키코드

  • 초창기 문자 집합 중 하나
  • 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자
  • 7비트로 하나의 문자 표현 (128개 표현 가능)
    • 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(paraty bit)
  • 간단한 인코딩
  • 하지만 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현 불가
    • 아스키코드는 7비트로 하나의 문자를 표현하기에 128개보다 많은 문자를 표현할 수 없음
    • 8비트 확장 아스키(extended ASCII)의 등장, 여전히 부족

A는 65로 인코딩, a는 97로 인코딩 된다. (코드 포인트 : 문자에 부여된 값)

 

 

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

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

부여된 코드는 예시이다.

 

EUC-KR

  • KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식
  • 완성형 인코딩
  • 글자 하나하나에 2바이트 크기의 코드 부여
  • 2바이트 == 16비트==4자리 십육진수로 표현

https://dencode.com/

 

DenCode | Encoder & Decoder 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

가

 

문제점

  • 2300여 개의 한글 표현 가능
  • 여전히 모든 한글을 표현하기에는 부족
  • 쀏, 뙠, 휔 같은 한글은 표현 불가능

 

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

 

 

통일된 문자 집합 & 인코딩 방식이 필요

 

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

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

https://unicode-table.com/en/blocks/

 

Unicode®

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바이트
  • 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다름

X 표시에 값을 차례대로 넣으면 된다.

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

 

Convert UTF8 to Binary Bits - Online UTF8 Tools

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

onlineutf8tools.com

 

'CS > 컴퓨터 구조' 카테고리의 다른 글

메모리와 캐시 메모리  (1) 2023.05.20
CPU의 성능 향상 기법  (0) 2023.05.12
CPU의 작동 원리  (1) 2023.05.08
소스 코드와 명령어  (0) 2023.03.21
컴퓨터 구조 개요  (0) 2023.03.15
  1. 0과 1로 숫자를 표현하는 방법
  2. 정보 단위
  3. 이진법: 0과 1로 숫자 표현하기
  4. 0과 1로 음수 표현하기 : 2의 보수
  5. 십육 진법
  6. 이진수 -> 십육 진수 변환
  7. 0과 1로 문자를 표현하는 방법
  8. 문자 집합과 인코딩
  9. 아스키코드
  10. 한글 인코딩 : 완성형 vs 조합형 인코딩
  11. 유니코드 문자 집합과 utf-8
'CS/컴퓨터 구조' 카테고리의 다른 글
  • CPU의 성능 향상 기법
  • CPU의 작동 원리
  • 소스 코드와 명령어
  • 컴퓨터 구조 개요
ewok
ewok
ewok
기록장
ewok
전체
오늘
어제
  • 분류 전체보기
    • 웹개발 교육
      • HTML
      • CSS
      • JavaScript
      • Database
      • Java
      • jQuery
      • Ajax
      • Bootstrap
      • jsp
      • Spring
      • MyBatis
      • 프로젝트
    • JAVA
    • SpringBoot
      • 기초
      • AWS
      • 개인프로젝트
    • Spring Security
    • JPA
    • 테스트코드
    • Error
    • CS
      • 컴퓨터 구조
      • 이산수학
    • 알고리즘
      • 정리
      • Java
    • SQL
    • 자격증
      • SQLD
      • 정보처리기사
    • Git

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • this
  • merge commit
  • 버전 관리
  • sqld 자격증
  • org.hibernate.tool.schema.spi.CommandAcceptanceException
  • org.springframework.beans.factory.UnsatisfiedDependencyException
  • git bash
  • base
  • 생성자
  • SQLD
  • branch
  • 브랜치
  • 노랭이
  • sqld 합격
  • GIT

최근 댓글

최근 글

hELLO · Designed By 정상우.
ewok
데이터
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.