[혼자 공부하는 컴퓨터구조 + 운영체제] - 0과 1로 숫자를 표현하는 방법

2023. 3. 28. 13:47·CS

 

컴퓨터는 0과 1 밖에 이해하지 못한다

0과 1 밖에 모르는 컴퓨터가 1보다 큰 수를 이해할 수 있을까?

 

 

비트(bit)

  • 0과 1을 표현하는 가장 작은 정보 단위
  • 컴퓨터가 이해하는 정보 단위
  • n비트로 2n가지의 정보 표현 가능
  • 프로그램은 수많은 비트로 이루어져 있음
  • 다만 평소 "이 파일은 3900 비트야" 라고 표현하진 않음
  • 그래서 비트보다 더 큰 다위를 사용
    • 바이트, 킬로바이트, 메가바이트, 기가바이트. 테라바이트 등등

 


 

 

정보단위

 

 

 

워드(word)

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

 

 


 

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

 

이진법(binary)

  • 0과 1로 수를 표현하는 방법
  • 숫자가 1을 넘어가는 시점에 자리올림
  • 우리가 일상적으로 사용하는 진법은 숫자가 9를 넘어갈 때 자리올림하는 십진법
  • 0과 1로 음수 표현하기 : 2의 보수
    • 모든 0과 1을 뒤집고 1 더한 값 

 

 


 

 

문자 집합과 인코딩

 

문자 집합

  • 컴퓨터가 이해할 수 있는 문자의 모음

인코딩

  • 코드화하는 과정
  • 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
  • 압축, 암호화 등등 사용

디코딩

  • 코드를 해석하는 과정
  • 0과 1로 표현된 문자 코드(인코딩된 문자 코드)를 문자로 변화하는 과정

 

 

 

아스키 코드

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

 

 

 

 

 

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

 

한글을 위한 인코딩이 필요

한글의 특징

  • 알파벳을 이어 쓰면 단어가 되는게 영어
  • 초성, 중성, 종성의 조합으로 이루어진 한글
  • 이런 한글의 특성으로 완성형 인코뎅 방식과 조합형 인코딩 방식이 존재

완성형: 강 / 민 / 철   -- 한글자 통째로 하나하나에 코드를 부여

조합형 : 자음과 모음의 조합으로 ㄱ + ㅏ + ㅇ  -- 조합 하나하나에 코드를 부여 

 

 

 

한글 인코딩 방식

1. EUC-KR

  • KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식
  • 완성형 인코딩
  • 글자 하나 하나에 2바이트 크기의 코드 부여
  • 2300여개의 한글 표현 가능
  • 모든 한글을 표현하기에는 부족함
  • 쀏 뛬 흵 같은 한글은 표현 불가능 

 

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

유니코드

  • 통일된 문자 집합
  • 한글, 영어, 화살표와 같은 특수 문자, 이모티콘까지
  • 현대 문자 표현에 있어 매우 중요함

유니코드의 인코딩 방식

  • utf-8, utf-16, utf-32 ...

utf-8 인코딩

  • UTF(Unicode Trancformation Format) == 유니코드 인코딩 방법
  • 가변 길이 인코딩 : 인코딩 된 결과가 1바이트 ~ 4바이트 중 하나일 수 있다
  • 인코딩 결과가 몇 바이트가 될 지는 유니코드에 부여된 값에 따라 다르다
  • (유니코드에 부여된 값 == 유니코드 코드 포인트)

 


 

 

 

 

다음은 03-1 소스코드와 명령어 

 

 

 

 

 

 

 

 

 

'CS' 카테고리의 다른 글

[혼자 공부하는 컴퓨터구조 + 운영체제] - 레지스터  (0) 2023.04.23
[혼자 공부하는 컴퓨터구조 + 운영체제] - ALU와 제어 장치  (0) 2023.04.16
[혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어의 구조  (0) 2023.04.16
[혼자 공부하는 컴퓨터구조 + 운영체제] - 소스 코드와 명령어  (0) 2023.04.01
[혼자 공부하는 컴퓨터구조 + 운영체제] - 컴퓨터 구조 시작하기1  (0) 2023.03.16
'CS' 카테고리의 다른 글
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - ALU와 제어 장치
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - 명령어의 구조
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - 소스 코드와 명령어
  • [혼자 공부하는 컴퓨터구조 + 운영체제] - 컴퓨터 구조 시작하기1
yoozung
yoozung
  • yoozung
    yoozung의 개발블로그
    yoozung
  • 전체
    오늘
    어제
    • 분류 전체보기
      • TIL
      • 알고리즘
      • CS
      • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 이전블로그(이사중)
  • 공지사항

  • 인기 글

  • 태그

    알고리즘누적합
    환경설정
    MySQL
    jdk설정
    알고리즘이모스
    이모스
    imos
    티스토리챌린지
    백준23295
    leetcode175
    springdi
    DBeaver
    디비버
    테이블내보내기
    프로그래머스
    오블완
    데이터내보내기
    보호소에서 중성화한 동물
    누적합
    leetcode176
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
yoozung
[혼자 공부하는 컴퓨터구조 + 운영체제] - 0과 1로 숫자를 표현하는 방법
상단으로

티스토리툴바