3주차 - park-gyubi/Computer GitHub Wiki

1-1. 디지털 데이터와 이진수

컴퓨터의 데이터 표현

  • 컴퓨터는 두 가지 전기 상태를 이용해 데이터를 표현함.
  • 꺼짐 → 0
  • 켜짐 → 1

비트(bit)

  • 0 또는 1을 저장하는 가장 작은 정보 단위
  • 비트가 여러 개 조합되면 더 많은 상태를 표현할 수 있음.
  • 1비트 → 2가지
  • 2비트 → 4가지
  • 3비트 → 8가지
  • n비트 → 2^n가지

디지털 데이터

  • 문자, 사진, 음악, 영상 등 모든 데이터는 최종적으로 0과 1의 비트 조합으로 저장됨.
  • 같은 비트 데이터라도 어떤 규칙으로 해석하는지에 따라 의미가 달라짐.
  • 숫자 0과 1 자체만 저장하는 것이 아니라 비트의 조합과 해석 규칙을 이용해 다양한 데이터를 표현함.

1-2. 이진수와 십진수 변환

이진수

  • 0과 1만 사용하는 수 체계
  • 각 자리에는 2의 거듭제곱에 해당하는 자리값이 존재함.
  • 오른쪽부터 1, 2, 4, 8, 16, 32, 64, 128...

이진수 → 십진수

  • 각 자리의 비트와 자리값을 곱한 뒤 모두 더함.
  • 예시: 1011₂
    • 8×1 + 4×0 + 2×1 + 1×1
    • = 11₁₀
  • 예시: 11010110₂
    • 128 + 64 + 16 + 4 + 2
    • = 214₁₀

십진수 → 이진수

  • 방법 1: 2의 거듭제곱으로 수를 분해함.
  • 예시: 13
    • 13 = 8 + 4 + 1
    • 1101₂
  • 예시: 45
    • 45 = 32 + 8 + 4 + 1
    • 101101₂
  • 방법 2: 2로 반복해서 나누고 나머지를 아래에서 위로 읽음.
  • 예시: 45
    • 45 ÷ 2 → 나머지 1
    • 22 ÷ 2 → 나머지 0
    • 11 ÷ 2 → 나머지 1
    • 5 ÷ 2 → 나머지 1
    • 2 ÷ 2 → 나머지 0
    • 1 ÷ 2 → 나머지 1
    • 결과: 101101₂

이진 소수

  • 소수점 오른쪽 자리값은 1/2, 1/4, 1/8, 1/16... 순서임.
  • 예시: 0.101₂
    • 1/2 + 1/8
    • = 0.625₁₀
  • 십진 소수를 이진수로 변환할 때는 2를 반복해서 곱하는 방법을 사용함.
  • 일부 십진 소수는 이진수로 정확하게 끝나지 않고 무한히 반복될 수 있음.

변환 방법 정리

  • 정수 → 반복 나눗셈
  • 소수 → 반복 곱셈
  • 결과 확인 → 각 자리값을 이용하여 다시 계산

비트 수와 표현 범위

  • n비트로 표현 가능한 상태 수: 2^n개
  • 부호 없는 정수의 범위: 0 ~ 2^n-1
  • 4비트 → 0~15
  • 8비트 → 0~255
  • 예시: 4비트에서 1111₂ + 1 = 10000₂
    • 5비트가 필요하므로 4비트 범위를 벗어남.

이진수와 십진수 변환

1-3. 비트와 바이트 그리고 용량

비트와 바이트

  • 비트(bit): 0 또는 1
  • 바이트(Byte): 8개의 비트
  • 8bit = 1Byte

용량 단위

  • B → KB → MB → GB → TB
  • 용량 단위가 올라갈수록 더 많은 데이터를 저장할 수 있음.

사례

  • 사진 한 장이 약 5MB이고 사진이 200장이라면
    • 5MB × 200 ≈ 1GB

비트와 바이트 단위

  • b = bit
  • B = Byte
  • 8b = 1B
  • 통신 속도는 주로 bps(bit per second)를 사용함.
  • 저장 용량은 주로 B, KB, MB, GB 등을 사용함.
  • 예시: 100Mbps
    • 100 ÷ 8 = 약 12.5MB/s
  • 비트와 바이트를 혼동하지 않도록 주의해야 함.

1-4. 문자는 어떻게 숫자가 되는가

문자 인코딩

  • 컴퓨터는 문자 자체의 모양을 저장하는 것이 아니라 문자에 대응되는 번호를 이용함.
  • 문자 → 코드 번호 → 바이트 형태로 변환하여 저장

예시

  • 가
    • Unicode 코드 포인트: U+AC00
    • UTF-8 바이트: EA B0 80

ASCII

  • 영문 문자 중심의 문자 코드
  • 알파벳, 숫자, 기본 기호 등을 표현

Unicode

  • 세계 여러 언어의 문자와 기호를 하나의 체계에서 표현하기 위한 문자 표준
  • 각각의 문자에 고유한 코드 포인트를 부여함.
  • 예시
    • A → U+0041
    • 가 → U+AC00
    • 😀 → U+1F600

UTF-8

  • Unicode 문자를 실제 바이트로 저장하는 인코딩 방식
  • 문자에 따라 필요한 바이트 수가 달라지는 가변 길이 방식
  • 예시
    • A → 41 → 1바이트
    • 가 → EA B0 80 → 3바이트
    • 😀 → F0 9F 98 80 → 4바이트
  • 따라서 글자 수와 저장되는 바이트 수는 항상 같지 않음.

문자 표시 과정

  • 키 입력 → 문자 코드 → 글꼴 → 화면
  • 문자 번호와 실제 화면에 그려지는 글자의 모양은 서로 다른 개념임.
  • 인코딩 = 문자 번호를 바이트로 표현하는 규칙
  • 글꼴 = 해당 문자의 모양을 화면에 그리는 데이터

한글 정규화

  • 화면에서 똑같이 보이는 글자도 내부 코드 포인트 구성은 다를 수 있음.
  • NFC
    • 완성된 하나의 코드 포인트 형태로 표현
    • 예: 가(U+AC00)
  • NFD
    • 자모를 여러 코드 포인트로 분리해서 표현
    • 예: ㄱ(U+1100) + ㅏ(U+1161)
  • 같은 글자로 보여도 내부 데이터가 다를 수 있음.

결합 문자와 이모지

  • 화면에서 한 글자처럼 보여도 여러 코드 포인트가 결합되어 있을 수 있음.
  • 예시
    • é = e + 결합 악센트로 표현 가능
    • 이모지 + 피부색 수정자
    • 여러 이모지 + ZWJ(Zero Width Joiner)
  • 사용자가 하나의 문자처럼 인식하는 단위를 그래핌 클러스터(Grapheme Cluster)라고 함.

문자 처리 과정

  • 코드 포인트 + 인코딩 + 정규화 + 글꼴

1-5. 문자 인코딩과 깨짐 해결

문자 깨짐 원인

  • 데이터를 저장할 때 사용한 인코딩과 읽을 때 사용한 인코딩이 다르면 문자가 깨질 수 있음.
  • 저장 인코딩 ≠ 읽기 인코딩 → 문자 깨짐 발생

자주 발생하는 사례

  • CSV 파일
  • 오래된 웹페이지
  • 전자우편
  • 다른 운영체제나 프로그램 사이에서 파일을 주고받을 때

문자 깨짐과 글꼴 문제 구분

  • 이상한 문자나 기호가 표시됨 → 인코딩 문제 가능성
  • 네모 상자(□) 등이 표시됨 → 해당 문자를 지원하는 글꼴이 없는 경우 가능성

안전한 해결 순서

  • 원본 파일 보존
  • 복사본 만들기
  • 사용된 인코딩 후보 확인
  • 올바른 인코딩으로 열기
  • 올바른 인코딩으로 다시 저장

문자 깨짐 진단 과정

  • 바이트 확인 → 디코딩 → 정규화 → 글꼴 확인
  • 인코딩 문제라면 UTF-8 등의 올바른 설정을 확인
  • 글꼴 문제라면 해당 문자를 지원하는 글꼴을 확인

문자 인코딩과 깨짐 해결


2-1. 픽셀과 디지털 이미지

픽셀

  • 디지털 이미지를 구성하는 가장 작은 점
  • 각각의 픽셀은 색상 값을 가짐.
  • 이미지를 크게 확대하면 픽셀 격자가 보임.

해상도

  • 이미지의 가로 픽셀 수 × 세로 픽셀 수
  • 예시: 1920×1080
    • 가로 1920픽셀
    • 세로 1080픽셀

화면 크기와 선명도

  • 같은 해상도라도 화면 크기에 따라 보이는 선명도가 달라질 수 있음.
  • 작은 화면에서는 픽셀이 촘촘하게 보여 더 선명하게 느껴질 수 있음.
  • 큰 화면에서는 같은 픽셀 수가 더 넓게 배치되어 픽셀이 쉽게 보일 수 있음.

이미지 품질

  • 해상도가 높다고 무조건 최고의 화질이 되는 것은 아님.
  • 화질에 영향을 주는 요소
    • 초점
    • 압축 방식과 품질
    • 카메라 센서
    • 조명 및 촬영 환경
    • 해상도

픽셀과 디지털 이미지

2-2. 색은 어떻게 숫자가 되는가

RGB

  • 빛의 빨강(R), 초록(G), 파랑(B)을 조합하여 색을 표현
  • 빛을 더할수록 밝아지는 가산 혼합 방식
  • 모니터, 스마트폰 등의 화면에서 사용

RGB 채널 값

  • R: 0~255
  • G: 0~255
  • B: 0~255
  • 각 채널은 8비트
  • RGB 전체는 24비트
  • 표현 가능한 색상 수
    • 256 × 256 × 256
    • = 16,777,216색
    • 약 1677만 색

예시

  • R=255, G=0, B=0 → 빨강
  • 색상 코드 #FF8000
    • R=255
    • G=128
    • B=0

RGB와 CMYK

  • RGB
    • 빛을 더하는 가산 혼합
    • 화면에 사용
  • CMYK
    • Cyan, Magenta, Yellow, Black
    • 잉크가 빛을 흡수하는 감산 혼합
    • 인쇄에 주로 사용

2-3. 래스터 이미지와 벡터 이미지

래스터 이미지

  • 픽셀을 이용하여 이미지를 저장
  • 사진 표현에 적합
  • 확대하면 픽셀이 보이면서 이미지가 깨져 보일 수 있음.
  • 대표 형식: JPEG, PNG

벡터 이미지

  • 선, 곡선, 도형 등의 수학적인 명령으로 이미지를 표현
  • 확대해도 선명함을 유지
  • 로고, 아이콘 등에 적합
  • 대표 형식: SVG

비교

  • 사진 → 래스터 방식에 적합
  • 로고, 아이콘 → 벡터 방식에 적합
  • 이미지의 사용 목적에 따라 적절한 방식을 선택해야 함.

레스터 이미지와 벡터 이미지

2-4. 소리의 디지털 표현

소리

  • 실제 소리는 시간에 따라 연속적으로 변화하는 아날로그 신호
  • 컴퓨터에서 처리하기 위해 일정한 간격으로 측정해 숫자로 변환함.

표본화 주파수

  • 1초 동안 소리를 측정하는 횟수
  • 단위: Hz
  • 표본화 주파수가 높을수록 더 많은 지점을 측정함.

비트 깊이

  • 측정한 진폭을 몇 단계로 나누어 표현하는지 결정
  • 비트 깊이가 높을수록 더 세밀하게 소리를 표현할 수 있음.
  • 예시: 3비트 → 2³ = 8단계

채널

  • 모노 → 1채널
  • 스테레오 → 2채널

소리 데이터 용량

  • 용량(bit) = 표본화 주파수 × 비트 깊이 × 채널 수 × 시간
  • 용량(Byte) = 용량(bit) ÷ 8
  • 다른 조건이 같다면 스테레오는 모노보다 약 2배 많은 데이터가 필요함.

2-5. 표본화와 양자화

표본화

  • 연속적인 신호를 일정한 시간 간격으로 측정하는 과정
  • 표본화 시간 간격(Δt)이 작을수록 원래 신호의 변화를 더 잘 표현할 수 있음.
  • 표본화 주파수가 낮으면 빠르게 변화하는 신호를 제대로 표현하지 못할 수 있음.

양자화

  • 측정된 진폭 값을 정해진 단계 중 가장 가까운 값으로 반올림하여 표현하는 과정
  • 양자화 단계가 많을수록 원래 값과의 차이가 작아짐.
  • 비트 깊이가 낮으면 양자화 단계가 적어 반올림 오차가 커지고 왜곡이나 잡음이 증가할 수 있음.

품질에 미치는 영향

  • 표본화 주파수 증가 → 시간 방향 표현이 세밀해짐.
  • 비트 깊이 증가 → 진폭 방향 표현이 세밀해짐.
  • 두 설정이 디지털 변환의 품질과 데이터 용량에 영향을 줌.

나이퀴스트 원리

  • 원래 신호를 제대로 표현하려면 최고 주파수의 2배보다 높은 표본화 주파수가 필요함.
  • fs > 2fmax
  • 또는 Δt < 1/(2fmax)
  • 조건을 만족하지 못하면 원래 신호를 정확하게 복원하기 어려움.

표본화와 양자화


3-1. 디지털 영상의 원리

프레임

  • 영상은 여러 장의 정지 이미지가 시간 순서대로 빠르게 이어진 것
  • 각각의 정지 이미지를 프레임이라고 함.
  • 프레임이 빠르게 이어지면 사람이 움직이는 영상으로 인식함.

FPS

  • Frames Per Second
  • 1초 동안 표시되는 프레임의 수
  • 예시
    • 24fps → 영화
    • 30fps → 강의 영상 등
    • 60fps → 게임, 빠른 움직임이 많은 영상
  • FPS가 높아질수록 움직임이 부드러워지지만 데이터 양도 증가함.

영상 데이터의 주요 요소

  • 해상도
  • 색 깊이
  • FPS
  • 재생 시간
  • 값이 커질수록 일반적으로 데이터 용량과 연산량이 증가함.

FPS와 화면 주사율

  • FPS: 영상 콘텐츠에서 1초 동안 생성되는 프레임 수
  • 화면 주사율(Hz): 모니터가 1초 동안 화면을 갱신하는 횟수
  • 서로 관련은 있지만 같은 개념은 아님.
  • 예시: 콘텐츠 30fps를 60Hz 모니터에서 표시할 수 있음.

FPS 비교

3-2. 이미지와 소리의 압축

압축

  • 데이터를 더 적은 용량으로 저장하거나 전송하기 위한 방법
  • 반복되는 데이터를 줄이거나 사람이 덜 민감하게 느끼는 정보를 줄이는 방식 등을 사용함.

무손실 압축

  • 압축을 해제하면 원본 데이터를 정확하게 복원할 수 있음.
  • 대표 형식
    • PNG
    • FLAC
    • ZIP
  • 원본 보존이 중요한 데이터에 적합

손실 압축

  • 일부 정보를 제거하여 용량을 크게 줄임.
  • 압축을 해제해도 제거된 정보는 완전히 복구할 수 없음.
  • 대표 형식
    • JPEG
    • MP3
  • 압축률을 높일수록 일반적으로 용량은 작아지지만 품질이 떨어질 수 있음.

목적에 따른 선택

  • 로고, 중요한 문서 → 무손실 또는 벡터 방식
  • 웹 사진, 스트리밍 → 용량과 품질을 고려한 적절한 손실 압축
  • 데이터의 목적에 따라 압축 방법을 선택해야 함.

3-3. 동영상 압축과 코덱

동영상 압축

  • 동영상에는 공간적·시간적으로 반복되는 정보가 많기 때문에 이를 이용해 용량을 줄임.

공간 중복

  • 한 프레임 안에서 비슷한 색상이나 정보가 반복되는 현상
  • 비슷한 영역을 묶거나 단순화하여 저장량을 줄일 수 있음.

시간 중복

  • 연속되는 프레임에서 같은 배경이나 물체가 반복되는 현상
  • 전체 정보를 저장하는 키 프레임과 이전 프레임에서 달라진 부분을 저장하는 변화 프레임 등을 이용할 수 있음.
  • 예시: 배경은 그대로 있고 손만 움직인다면 손의 움직임과 같이 달라진 부분을 중심으로 저장

코덱

  • Codec
  • 영상이나 음성 데이터를 어떻게 압축하고 복원할지 정하는 규칙
  • 인코딩: 원본 데이터를 압축
  • 디코딩: 압축된 데이터를 복원하여 재생
  • 인코딩과 디코딩에서 같은 코덱 규칙을 사용해야 함.
  • 대표 영상 코덱
    • H.264 / AVC
    • H.265 / HEVC
    • VP9
    • AV1

코덱과 컨테이너

  • 코덱 = 데이터를 압축하고 복원하는 규칙
  • 컨테이너 = 영상, 음성, 자막 등의 여러 데이터를 하나의 파일로 묶는 형식
  • MP4는 영상·음향·자막 등의 스트림을 담을 수 있는 컨테이너 형식

3-4. 해상도, 비트레이트, 파일 크기

영상 품질에 영향을 주는 요소

  • 해상도
  • FPS
  • 비트레이트
  • 코덱
  • 장면 복잡도
  • 4K와 같이 해상도가 같더라도 다른 설정에 따라 품질과 파일 크기는 달라질 수 있음.

비트레이트

  • 1초 동안 사용하는 데이터의 양
  • 단위: bps(bit per second)
  • 비트레이트가 높을수록 일반적으로 더 많은 정보를 저장할 수 있지만 파일 용량도 증가함.

파일 크기 계산

  • 파일 크기(Byte) ≈ 비트레이트 × 재생 시간 ÷ 8
  • 예시: 10Mbps 영상 10분
    • 10Mbps = 10,000,000bps
    • 10분 = 600초
    • 10,000,000 × 600 ÷ 8
    • ≈ 750,000,000Byte
    • ≈ 750MB

장면 복잡도

  • 움직임이 적고 단순한 화면
    • 반복되는 정보가 많음.
    • 압축 효율이 높음.
    • 비교적 낮은 비트레이트로도 표현 가능
  • 스포츠처럼 움직임이 많고 복잡한 화면
    • 변화하는 정보가 많음.
    • 압축하기 어려움.
    • 높은 품질을 유지하려면 더 많은 데이터가 필요

3-5. 목적에 맞는 데이터 형식 선택

파일 형식 선택 기준

  • 내용
  • 편집 가능 여부
  • 품질
  • 용량
  • 호환성
  • 원본 보존 여부

형식 예시

  • 문자 → UTF-8
  • 사진 → JPEG, PNG
  • 로고 → SVG
  • 소리 → WAV, MP3
  • 영상 → MP4

원본과 배포본

  • 편집 가능한 원본은 따로 보존
  • 다른 환경에서 쉽게 사용할 수 있는 배포본을 별도로 생성
  • 원본을 직접 변환하거나 덮어쓰기보다 원본과 배포본을 분리하는 것이 안전함.

안전한 변환 과정

  • 백업
  • 파일 변환
  • 정상적으로 열리거나 재생되는지 확인
  • 공유

데이터 형식 선택

  • 데이터 형식은 무조건 하나가 좋은 것이 아니라 사용 목적, 품질, 용량, 호환성 등을 고려하여 선택해야 함.

파일 확장자 아이콘 모음


확인 질문

  1. 스위치 4개는 몇 가지 상태를 표현할까? 16가지 (2^4)
  2. 십진수 13을 이진수로 표현 1101
  3. 100Mbps는 초당 몇 MB일까? 100 ÷ 8 = 12.5Mps
  4. 'A', '가', 이모지는 어떻게 표시될까? 각각 문자 코드 A - U+0041 가 - U+AC00 😀 → U+1F600
  5. 깨진 CVS를 안전하게 복구하는 순서는? 파일의 저장 인코딩 확인 -> 같은 인코딩으로 다시 읽기 -> 글꼴이 지원하는지 확인
  6. 같은 이미지가 큰 화면에서 거칠어지는 이유는? 같은 픽셀 수를 더 큰 화면에서는 확대가 되기 때문이다.
  7. R=255, G=0, B=0은 어떤 색일까? 빨강색
  8. 증명사진, 학교 로고, 지도 아이콘의 형식은? 사진 - 래스터 로고, 아이콘 - 벡터
  9. 모노와 스테레오의 용량 차이(같은 조건이라면 어떻게 달라지는가)? 모노 - 1채널, 스테레오 - 2채널 => 스테레오가 모노의 2배
  10. 시간 간격과 진폭 단계가 품질에 미치는 영향은? 시간 간격이 작아지면 자주 측정할 수 있어 원래 신호를 더 정확하게 표현 가능 진폭 단계가 늘어나면 진폭을 더 세밀하게 표현 할 수 있어서 원래 신호에 더 가까워짐
  11. 30fps 와 60fps의 표현과 용량 차이는? 표현:60fps가 30fps보다 1초에 표시되는 프레임이 2배 많기때문에 움직임이 더 부드럽다 용량: 같은 조건에서 6-fps가 30fps의 2배가 된다.
  12. 학교로고, 여행 사진, 음성 녹음의 방식은? 로고 - 무손실 압축 사진, 음성 녹음 - 손실 압축
  13. 고정 배경에서 손만 움직이면 무엇을 저장할까? 배경은 그대로 두고 움직이는 손의 변화만 저장
  14. 10Mps 영상 10분의 대략적인 크기는? 10Mbps * 600초 ÷ 8 = 750MB

필기 내용을 chat gpt로 다듬어 요약 정리함