[CS] 자료의 저장과 표현

김지혜·2023년 9월 6일
0

CS

목록 보기
3/5

1. 비트와 바이트

  • 컴퓨터 메모리에 저장되는 자료는 0과 1로 이루어진 비트로 표현
    이진수 치계를 사용하여 자료를 표현하며, 각 비트는 전기적 신호나 자기적인 방식으로 저장
    (EX. 8개의 비트로 이루어진 바이트는 0과 1의 256가지 조합을 나타냄)

1-1 이진수 체계

이진수 체계:

  • 0과 1 두 가지 숫자만을 사용하여 수를 나타내는 수의 체계

  • 이진수는 2진법이라고도 불리며, 0과 1을 사용하여 숫자를 표현

  • 각 자리는 2의 거듭제곱으로 표현되며, 오른쪽에서 왼쪽으로 갈수록 2의 지수가 증가

이진수에서 오른쪽에서 왼쪽으로 진행하면서 자리마다 2의 지수에 해댕하는 값을 할당하고,
그 값에 0 또는 1을 곱해서 해당 자리의 값을 구한다.

📌ㄴ EX.

// 이진수 1010 를 10진수로 표현
---
1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
= 8 + 0 + 2 + 0
= 10

  • 이진수는 컴퓨터에서 데이터를 표현하는데 효율적이다.
    -> 컴퓨터 시스템의 메모리와 프로세서는 0과 1의 상태를 쉽게 표현하고 퍼리할 수 있기 때문에, 이진수를 사용하여 데이터를 저장하고 연산을 수행한다.

  • 이진수로 비트와 바이트 같은 작은 단위로 데이터를 표현하는 것이 가능하고,
    데이터의 크기를 효율적으로 관리할 수 있다.

  • 논리 연산에서는 이진수의 입력과 출력을 기반으로 논리적인 연산을 수행하며,
    논리 연산의 진리값을 표현하는 데 사용된다.

📌 EX.

// 이진수로 표현한 10진수 숫자 
---
7: 이진수로는 '111' 
세 개의 비트가 모두 1로 채워져 있다. 
이진수에서 가장 오른쪽 비트부터 2^0, 2^1, 2^2 순서로 값이 할당되고, 
해당 비트가 1인 경우 해당 값을 더한다.

1-2 비트의 개념 (한칸🔲)

비트:

  • 컴퓨터에서 정보를 표현하는 가장 기본적인 단위이다.

  • "binary digit"의 줄임말
    = 이진수 체계에서 0과 1 두 가지 값을 가질 수 있는 최소한의 단위

  • 비트는 두 가지 상태를 가지기에 단순한 정보 단위로 보일 수 있지만,
    여러 비트를 조합하여 복잡한 정보를 나타낼 수 있다.
    (EX. 8개의 비트로 이루어진 바이트는 256(2의 8승)가지의 조합을 나타낼 수 있다.)

  • 컴퓨터의 모든 데이터를 표현하는 데 사용된다.
    • 텍스트, 숫자, 이미지, 음악, 비디오 등 모든 종류의 정보는 비트로 변환되어 저장되고 처리된다.
    • 컴퓨터는 비트를 이해하고 다룰 수 있는 회로와 알고리즘을 사용하여 정보를 처리하고 표현한다.

📌 EX.

// 이진수로 표현한 10진수 숫자
7: 이진수로는 '111' 
세 개의 비트가 모두 1로 채워져 있다. 
이진수에서 가장 오른쪽 비트부터 2^0, 2^1, 2^2 순서로 값이 할당되고, 
해당 비트가 1인 경우 해당 값을 더한다.

1-3 바이트의 개념 (한줄〰️)

바이트:

  • 컴퓨터에서 데이터를 저장하고 처리하는 데 사용되는 단위이다.

  • 바이트는 여러 개의 비트를 모아놓은 형태로, 보통 8개의 비트로 이루어져 있다.

  • 정보를 더 큰 단위로 나타내기 위해 사용된다.

    • 비트는 단순히 0과 1의 두 가지 값을 나타내지만, 바이트는 2의 8승인 256가지의 조합을 나타낼 수 있다.
      => 2의 8승인 256가지의 조합을 나타낼 수 있다.
      (EX. 다양한 문자, 숫자, 기호 등을 표현할 수 있는 충분한 범위를 제공한다.)
  • 컴퓨터 메모리는 주로 바이트 단위로 관리된다.

    • 메모리의 각 주소는 바이트 단위로 접근된다.
    • 프로그램이나 데이터는 바이트로 구성된 메모리에 저장된다.
    • 파일 시스템에서도 파일의 크기는 일반적으로 바이트 단위로 표시된다.
  • 다양한 데이터를 표현하는데 사용된다.

    • 텍스트 문서는 각 문자를 ASCII, UTF-8 또는
      다른 문자 인코딩 방식으로 바이트로 표현하여 저장한다.
    • 이미지, 음악, 비디오 등의 멀티미디어 파일도 바이트로 구성된다.
    • 그외 특정한 파일 형식에 따라 바이트로 저장된다.
  • 컴퓨터의 데이터 저장과 처리에서 중요한 개념이다.

    • 데이터를 바이트 단위로 나누어 저장하고 처리함으로써,
      효율적인 데이터 관리와 다양한 데이터 유형의 처리를 가능하게 한다.

바이트로 표현한 데이터 예시

  1. ASCII 문자열
  • ASCII 인코딩을 사용하여 문자열을 바이트로 표현할 수 있다.

EX. "Hello"라는 문자열을 각 문자를 ASCII 코드에 맞게 바이트로 표현한다.

  • 'H': 72 (01001000)
  • 'e': 101 (01100101)
  • 'l': 108 (01101100)
  • 'l': 108 (01101100)
  • 'o': 111 (01101111)
  1. 이미지 파일
  • 이미지 파일은 픽셀 데이터로 구성되며, 각 픽셀의 색상 정보를 바이트로 표현한다.

EX.

  • 각 픽셀은 빨강(R), 초록(G), 파랑(B)의 성분을 8비트씩 가진다.
  • 이진수로 표현된 색상 값은 픽셀마다 다양한 바이트로 구성된다.
  1. 음악 파일
  • 음악 파일은 소리의 파형 데이터로 구성되며, 일반적으로 디지털 오디오 형식을 사용하여 바이트로 표현된다.
  • 각 샘플은 일정한 시간 간격으로 샘플링되고, 이러한 샘플링 데이터는 바이트로 표현된다.
  1. 실행 파일
  • 컴퓨터 프로그램은 실행 파일로 저장되고, 이 파일은 기계어로 표현된 바이너리 코드로 구성된다.
  • 각 명령어와 데이터는 바이트로 표현되어 컴퓨터의 프로세서가 이를 이해하고 실행할 수 있다.

bit와 Byte 정보 단위

**bit와 Byte 정보 단위**
단위바이트(B)비트(b)
비트(bit)1/8 바이트1비트
바이트(Byte)1 바이트8 비트
킬로바이트(KB)1000 바이트8000 비트
메가바이트(MB)10^6 바이트8 x 10^6 비트
기가바이트(GB)10^9 바이트8 x 10^9 비트
테라바이트(TB)10^12 바이트8 x 10^12 비트
  • 비트(bit) 와 바이트(Byte)는 모두 B로 시작 하기 때문에 비트는 소문자 b , 바이트는 대문자 B 로 표기

2. 자료의 표현 형식

2-1 텍스트 자료의 표현

(1) ASCII

  • ASCII (American Standard Code for Information Interchange)

  • 가장 일반적으로 사용되는 문자 인코딩 중 하나

  • ASCII는 7비트로 구성
    -> 각각의 비트 조합은 128개의 고유한 문자를 나타낸다.

  • ASCII 코드는 영어 알파벳, 숫자, 특수 문자 등을 포함
    (EX. 문자 'A' -> ASCII 코드에서 65에 해당하는 값으로 표현 (이진수 : 01000001))

📌 7비트만 사용하는 이유

  • 7비트로 표현된 ASCII 코드
    -> 2^7 = 128개의 고유한 값을 나타낼 수 있다.
  • 이는 영어 알파벳, 숫자, 특수 문자 등을 포함한 기본적인 문자 집합을 표현하기에 충분하다.
    -> 초기 컴퓨터 시스템에서는 주로 영문 텍스트를 다루기 때문에 7비트로 구성된 ASCII 코드가 널리 사용되었다.
  • 7비트 ASCII는 0부터 127까지의 값을 사용하여 문자를 나타냄
    (EX.'A' -> 65, 'a' -> 97)
    -> 나머지 128부터 255까지의 값은 사용되지 않거나,
    다른 문자 인코딩 체계에 따라 확장 문자나 특수 문자로 사용될 수 있다.

=> ASCII 문자 코드 표
1. 해당 문자의 왼쪽에 있는 2진 코드가 ASCII 코드가 되는 것
2. 예로 문자 ‘A’의 왼쪽에 있는 1000001이 ‘A’의 ASCII 코드가 된다.

  • ASCII는 각 문자를 7비트로 표현하므로 총 128(= 27)개의 문자를 표현할 수 있다.

확장(extended) ASCII:

  • ASCII로 표현할 수 있는 문자들 외에 추가적인 문자를 지원해야 할 필요성이 존재
    -> 기존 7비트에 1비트를 추가하여 8비트를 사용한 코드가 정의
  • 256(= 28)개의 문자를 표현 가능
  • 기존 7비트 ASCII 코드에는 가장 왼쪽에 0을 추가하여 8비트 형식이 되게 함

“We”를 8비트 형식의 ASCII로 나타냄

그러나 ASCII로는 영어와 몇 가지 특수 문자만을 표현할 수 있고, 각 나라별 언어를 표현할 수 없다.
-> 이런 문제를 해결한 코드 -> 유니코드 와 UTF-8

(2) 유니코드 와 UTF-8

1. 유니코드(Unicode)

  • 전 세계의 모든 문자를 고유한 코드 포인트로 나타내는 국제 표준이다.
  • "U+"로 시작, 각 문자는 16진수 값으로 표현된 코드 포인트를 나타낸다.
  • 각 문자에는 유니코드 코드 포인트라고 불리는 고유한 식별자가 할당된다.
    -> 이 코드 포인트는 16진수로 표현된다.
    (EX. "A" -> U+0041)
  • 유니코드는 문자를 표현하는 방식에 대한 표준이며, 실제로 문자를 저장하거나 전송하는 방식에 대한 규정은 아니다.

EX.

2. UTF-8(Unicode Transformation Format-8)

  • 유니코드를 컴퓨터에서 저장하고 전송하기 위한 가변 길이 문자 인코딩 방식
  • ASCII 문자에 대해서는 7비트로 표현한다.
    -> 다른 유니코드 문자는 8비트 이상으로 확장하여 표현한다.
    • 유니코드 문자를 효율적으로 저장하고 전송할 수 있습니다.
  • 가변 길이 인코딩이기 때문에 유니코드 코드 포인트를 다양한 크기의 바이트 시퀀스로 변환한다.
    -> ASCII 문자는 1바이트로 표현되며, 추가적인 문자는 2바이트부터 최대 4바이트까지 사용될 수 있다.

EX.

📌 가변길이

  • 유니코드에 먼저 등록된 영어와 숫자같은 문자는 1byte,
    그뒤에 등록된 문자는 4byte
    -> 차별적 혹은 가변적으로 할당하는 방법을 택했다.
    EX. 유니코드별 Byte 할당

    -> 이제, byte 별로 가변길이 구분짓기 위해 첫바이트에 표식을 추가
    • 1byte는 0으로 시작,
    • 2byte는 110으로 시작하고,
    • 3byte는 1110으로 시작,
    • 4byte는 11110으로 시작,
    • 나머지 byte는 10으로 시작
      EX.
    • 곰 -> U+ACF0(표상 3바이트 범위)
    • "a" -> U+0061(1바이트 범위)
      -> 1바이트의 표시형식을 참고하여 다음과 같이 인코딩된다.
  • 유니코드: 문자를 고유한 코드 포인트로 나타내는 국제 표준
  • UTF-8: 유니코드를 컴퓨터에서 효율적으로 저장하고 전송하기 위한 인코딩 방식
    -> 가변 길이 인코딩을 사용하여 다양한 크기의 바이트 시퀀스로 문자를 표현한다.

📌 유니코드같이 큰 단위의 바이트를 사용하면 모든 숫자나 문자 등을 표현할 수 있는데,
프로그래밍을 하면 UTF-8 같이 다양한 데이터 타입을 사용하는 이유?

  • 컴퓨터는 받아들이는 모든 정보를 메모리에 저장한다.
    (EX. 1과 같은 작은 수를 표현하는데 4Byte를 사용해서 표현하게 되면,
    그만큼의 메모리가 낭비된다.)
  • 메모리가 넉넉하지 못한 환경에서 동작하는 프로그램을 사용한다면,
    효율적으로 메모리를 사용하는 것이 중요하기 때문에 UTF-8 같이 다양한 데이터 타입을 사용하는 것이다.

ASCII vs 유니코드 vs UTF-8

2-2 숫자 자료의 표현

  • 컴퓨터에서 숫자를 표현하기 위해 비트의 조합을 사용

  • 각 비트는 0 또는 1의 값을 가질 수 있다.
    -> 여러 비트를 조합하여 숫자를 나타낸다.

  • 비트:
    컴퓨터의 메모리나 레지스터와 같은 장치에 저장된다.

1. 부호 없는 정수

  • 이진수를 사용하여 양수만을 표현한다.
  • 각 비트는 0 또는 1의 값을 나타낸다.
    -> 숫자의 크기를 나타내기 위해 자릿수가 높아질수록 2의 거듭제곱으로 증가한다.
    (EX. 8비트로 표현된 부호 없는 정수
    -> 숫자 42 -> 이진수로 00101010로 표현)

2. 부호 있는 정수

  • 부호 있는 정수는 양수와 음수를 모두 표현할 수 있다.

  • 일반적으로 2의 보수 (two's complement) 표현 방식을 사용한다.

  • 양수는 부호 비트가 0으로 표현

  • 음수는 부호 비트가 1로 표현

(EX. 8비트로 표현된 부호 있는 정수,
숫자 -42 -> 이진수로 11010110로 표현)

📌 2의 보수
1. 42의 이진수 표현

  • 42는 이진수 -> 00101010로 표현
    2. 1의 보수
  • 2의 보수 변환을 위해 42의 이진수에 대해 1의 보수를 취한다.
    -> 1의 보수는 0을 1로, 1을 0으로 반전시키는 작업이다.
  • 42의 1의 보수 -> 11010101
    • 00101010를 반전한다.
      3. 2의 보수
  • 1의 보수를 취한 결과에 1을 더함
    -> 2의 보수
  • 11010101 + 1 = 11010110
    -> -42를 음수로 표현한 2의 보수 표현
    42를 2의 보수로 변환 -> -42로 표현된다.
    => 2의 보수 방식은 부호 있는 정수 표현에서 음수 값을 표현하는 데에 주로 사용된다.

3. 실수

  • 소수점을 가지는 숫자를 표현

  • 일반적으로 부동 소수점 표현 방식을 사용
    -> 가수와 지수를 이용하여 실수를 표현하는 방법

  • 부동 소수점은 정밀도와 범위를 조절할 수 있다.
    (EX. 대부분 IEEE 754 표준을 따른다.)

  • 컴퓨터는 비트로 숫자를 저장하고 처리하기 때문에
    -> 숫자의 크기, 정밀도, 부호 등을 조절하여 다양한 숫자 자료를 표현할 수 있다.

  • 숫자를 이진수로 변환
    -> 이진수를 다시 숫자로 변환하여 컴퓨터에서 숫자를 표현하고 계산한다.

EX.

2-3 멀티미디어 자료의 표현

  • 컴퓨터에서 멀티미디어 자료를 표현하기 위해서는 특정 파일 형식을 사용한다.
  • 각각의 멀티미디어 자료 유형에는 해당 형식에 맞는 특정 압축, 인코딩 및 알고리즘을 사용하여 데이터를 저장하고 표현한다.

1. 이미지

  • 비트맵(bitmap) 또는 벡터(vector) 형식으로 표현된다.
  • 비트맵 이미지:
    • 픽셀로 구성되며, 각 픽셀은 색상 정보를 나타내는 숫자로 표현된다.
      (EX. JPEG(Joint Photographic Experts Group), PNG(Portable Network Graphics)는 흔히 사용되는 비트맵 이미지 형식)
  • 벡터 이미지:
    • 수학적인 식이나 명령어로 구성되며, 확대 및 축소에 따라 해상도가 유지된다.
      (EX. SVG(Scalable Vector Graphics)가 대표적인 벡터 이미지 형식)

2. 오디오

  • 일련의 연속적인 음향 신호로 표현
  • PCM(Pulse Code Modulation):
    • 가장 기본적인 오디오 표현 방식으로, 아날로그 오디오 신호를 디지털 신호로 변환한다.
  • WAV(Waveform Audio File Format) / AIFF(Audio Interchange File Format):
    • PCM 오디오를 저장하기 위해 사용되는 형식
  • 압축된 오디오 형식:
    • MP3(MPEG Audio Layer-3), AAC(Advanced Audio Coding) 등이 있다.

3. 동영상

  • 연속적인 이미지 프레임의 시퀀스로 표현
  • 주로 비트맵 이미지와 오디오를 조합하여 구성된다.
    (EX. AVI(Audio Video Interleave), MP4(MPEG-4 Part 14) 및 MKV(Matroska) 등의 형식이 사용된다.)
  • 동영상 압축 형식:
    (EX. MPEG(Moving Picture Experts Group) 시리즈, H.264, VP9, AV1 등)
    -> 이러한 압축 알고리즘은 비디오 데이터를 효율적으로 압축하여 저장 및 전송할 수 있도록 한다.

=> 컴퓨터에서 멀티미디어 자료를 표현하기 위해서는
-> 해당 유형의 데이터를 해석하고, 디코딩하고, 필요한 경우 재생성 및 렌더링하는 소프트웨어 또는 하드웨어가 필요하다.

0개의 댓글