Suyeon9911 / TIL

매일 오전에 적는 미라클 TIL 🥣
10 stars 0 forks source link

[Computer Architecture] 컴퓨터구조 2장 - 데이터 #90

Closed Suyeon9911 closed 1 year ago

Suyeon9911 commented 1 year ago

CH2 데이터

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

  1. 정보단위 : 컴퓨터는 0과 1밖에 이해하지 못한다.

    • 0과 1을 나타내는 가장 작은 정보단위를 비트라고 함
    • n비트는 2^n 가지의 정보를 표현할 수 있다.
    • 웹 브라우저, 워드 프로세서, 포토샵 등 우리가 실행하는 모든 프로그램은 수십만, 수백만 개 이상의 0과1로 이루어져 있다.
    • 프로그램의 크기를 말할 때는 표현의 편의를 위해 비트보다 큰 단위를 사용한다. 바이두트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트
    • 바이트 는 여덟 개의 비트를 묶은 단위 !
    • 비트보다 한 단계 큰 단위입니다. 1바이트는 8비트와 같으니 256개의 정보를 표현할 수 있다.
    • 1바이트 1000개를 묶은 단위를 1킬로바이트라고 한다.
    • 1킬로바이트 1000개를 묶는 단위를 1메가바이트, 1메가바이트를 1000개 묶은 단위를 1기가바이트, 1기가바이트를 1000개로 묶은 단위를 1테라바이트라고 함.
    • 워드? CPU가 한번에 처리할 수 있는 데이터 크기를 의미 . cpu가 만약에 한번에 16비트를 처리할 수 있다면 1워드는 16비트가 된다.
    • 이렇게 정의된 워드의 절반을 하프워드, 1배크기를 풀워드 2배를 더블워드라고 부른다. 워드크기는 cpu 마다 다르지만 대부분 32비트 또는 64비트
  2. 이진법

    • 0과 1만으로 모든 숫자를 표현하는 방법
    • 이진법을 이용하면 1보다 큰 수도 0과 1만으로 표현할 수 있다.
    • 이진법으로 표현한 수를 이진수, 십진법으로 표현한 수를 십진수.
    • 일상적으로 십진수를 사용하지만, 컴퓨터에 어떤 숫자를 알려주려면 이진수로 알려주어야한다.
    • 이진수 표기: 아래첨자 (2), 앞에 0b
    • 이진수의 음수표현 : 0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법 !
    • 2의 보수란 ? 어떤 수를 그보다 큰 2^n에서 뺀 값
    • 11(2)의 2의 보수는 11(2)보다 큰 2^n 즉 100(2) 에서 11(2)을 뺸 01(2)
    • 쉽게 말하자면 모든 0과 1을 뒤집고 거기에 1을 더한값 ! 11 -> 00 -> 01
    • 1011의 음수는 0100 -> 0101 이 음수
    • 그러면 1011의 음수인 0101 과 그냥 양수인 0101을 어떻게 구분하나요??? 실제로 이진수만 봐서는 이게 음수인지 양수인지 구분하기 어렵다. 그래서 컴퓨터 내부에서는 어떤 수를 다룰 때는 이 수가 양수인지 음수인지를 구분하기 위해 플래그를 사용한다.
    • 플래그는 쉽게 말해 부가 정보 : 컴퓨터 내부에서 어떤 값을 다룰 떄 부가 정보가 필요한 경우 플래그를 사용한다.
  3. 십육진법

    • 하나의 이진수는 하나의 비트로 나타낼 수 있기에 이진법을 이용하면 컴퓨터가 이해하는 숫자 정보를 직접적으로 표현할 수 있다.
    • 하지만 이진법은 0과 1만으로 모든 숫자를 표현하다보니 숫자의 길이가 너무 길어진다는 단점
    • 십진수 32 -> 100000
    • 그래서 십육진법도 자주 사용 : 수가 15가 넘어가는 시점에 자리 올림을 하는 숫자표현 방식
    • 10 11 12 13 14 15 를 십육진법 체계에서는 A,B,C,D,E,F 로 표현
    • 한글자로 열여섯 종류의 정보를 표현 할수 있따.
    • 표현 (16) 아래첨자, 숫자앞에 0x 붙여 구분
    • 십육진법을 굳이 사용하는 이유? 이진수를 십육진수로, 십육진수를 이진수로 변환하기 쉽기 때문 !!

    • 십육진수를 이진수로 변환하기 : 십육진수를 이루는 숫자하나를 이진수로 표현하려면 4비트가 필요합니다 2의 4승이 16이니까
    • 1A2B -> 0001101000101011
    • 반대는 4자리수씩 끊어서 변환
Suyeon9911 commented 1 year ago

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

  1. 문자 집합과 인코딩

    • 문자 집합, 인코딩, 디코딩.
    • 문자 집합 : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음,
    • 문자를 0과 1로 변환해야 비로소 컴퓨터가 이해할 수 있음. 변환과정을 문자 인코딩이라 하고 인코딩 후 0과 1로 이루어진 결과값이 문자 코드가 됩니다.
    • 인코딩의 반대과정 ! 문자 디코딩 은 사람이 읽을 수 있는 문자로 변환
  2. 아스키코드

    • 아스키 : 초창기 문자 집합
    • 아스키 문자는 7비트 -> 2^7 로 총 128개의 문자를 표현할 수 있다.
    • 아스키 문자에 대응된 고유한 수를 아스키 코드라고 한다.
    • 아스키 문자 -> 아스키 코드로 인코딩 A는 65 -> 이진수 1000001 a는 97 110001 !sms 33 -> 100001 등등
    • Backspace, Escape, Cancel, Space 와 같은 제어 문자도 아스키 코드에 포함되어 있다는 사실 ~
    • 아스키 코드 단점 : 한글을 표현할 수 없고, 문자집합 이외의 특수문자 도 안된다.
    • 확장 아스키도 등장 ~ 그럼에도 256개
  3. 한글 인코딩 등장 ! EUC-KR

    • 한글은 각 음절 하나하나가 초성, 중성, 종성의 조합으로 이루어져 있음
    • 그래서 한글 인코딩에는 두가지 방식, 완성형과 조합형이 존재 !!
    • 완성형 인코딩 : 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식
    • 조합형 인코딩: 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비트열을 할당하여 그것ㄷ르이 조합으로 하나의 글자 코드를 완성하는 인코딩 방식
    • EUC-KR 은 완성형인코딩 방식 !
    • 한글자에 2바이트 코드 부여. 16비트. 십육진수로 표현.
    • 그렇지만 모든 한글을 표현할 수는 없다. 크고 작은문제 : 한글이 깨진다던지 은행, 학교 등에서 피해
    • 해결하기 위해 마이크로소프트의 *CP949 => EUC-KR의 확장된 버전
  4. 유니코드와 UTF-8

    • EUC-KR의 한계 : 모든 한글을 표현할 수 없고 언어별로 인코딩을 해야된다면 다국어를 지원하는 프로그램을 만들때 각 나라 언어의 인코딩을 모두 알아야한다는 불편함이 존재
    • 모든 나라 언어의 문자 집합과 인코딩 방식 통일 => 유니코드 문자집합
    • 유니코드는 현대 문자를 표현할 때 가장 많이 사용되는 표준 문자 집합
    • 글자에 부여된 값을 그대로 인코딩 값으로 삼는게 아니라 다양한 방법으로 인코딩.
    • 가장 대중적인 UTF-8