logo
Published on

CH2. 비트와 데이터 표현

Authors
  • avatar
    Name
    seren-wib
    Twitter
Contents

2.1 비트와 비트 저장

표현 → 처리 → 저장 → 읽기

컴퓨터는 정보를 비트패턴으로 표현하고, 논리회로로 처리하며, 저장회로에 저장한다

2.1.1 정보를 표현하는 최소 단위

  1. bit: 최소단위(0, 1)
  2. 1byte = 8bit
  3. bit pattern: 01010100 같은거
    • 같은 비트패턴이어도 어떻게 해석하느냐에 따라 의미가 달라짐.
    • ASCII같은거 컴퓨터 자체가 인식해서 65=A로 바로 못바꿈

2.1.2 비트를 처리하는 회로

  1. 부울연산

    1. AND: 둘다 맞아야 참
    2. OR: 둘 중 하나만 맞아도 참
    3. XOR: 서로 달라야 참
    4. NOT: 그냥 반대
  2. 논리 게이트

  • 부울 연산을 하드웨어로 구현한 회로
논리 게이트 기호와 진리표
  1. 논리 회로

    • 게이트 여러 개를 연결한 회로
    • 값을 계산함
    • (A AND NOT B) OR (NOT A AND B) = XOR
  2. CPU 구성요소

    1. control unit(제어장치)
    2. ALU(산술논리장치): 여기서 연산
    3. registers(레지스터)
    4. cache(캐시)

    논리게이트 < 논리회로 < CPU

2.1.3 비트를 저장하는 회로

  1. 플립플롭(Flip-Flop)

    • D(입력) / Clock(저장하라고 알리는 신호) / Q(출력)
    • 값을 저장(1비트만)
    • 클록이 들어올 때만 D가 Q에 저장되고, 그 사이에 D가 바뀌어도 Q는 그대로
    • 저장된 값은 변경 전까지 유지
  2. 레지스터

    • 여러비트를 저장
    • 플립플롭 여러개를 묶은거(플립플롭8개 = 8비트 레지스터)

2.1.4 비트패턴을 간단히 쓰는 방법

  1. 16진 표기법
    • 2진법은 사람이 알아먹기 힘들어서 이걸로 보여줌. 주로 메모리주소, 레지스터 값, 색상 헥스값.
    • 컴퓨터에는 2진법으로 저장됨
    • 16진수 한 자리 = 4비트
    • 비트를 오른쪽부터 4개씩 끊기
    • 기호는 0–9랑 A–F, 0x 붙여서 표기.

2.2 기억 장치

2.2.1 실행 중인 정보의 저장

  1. 주기억장치(main memory)

    • 실행할 프로그램의 명령어랑 처리할 데이터를 저장
    • 느리고 많이
  2. 레지스터

    • 지금당장 빨리 처리해야하는거
    • 빠르고 적게
  3. 메모리 셀

    • 셀: 주기억장치를 일정한 크기로 나눈 한 칸(1바이트)
    • 주소: 셀마다 붙은 번호
  4. 메모리 읽기/쓰기

    • 읽기: CPU가 데이터 주소 지정해서 메모리가 CPU한테 값 전달해서 읽음. 당연히 원래 값 유지
    • 쓰기: CPU가 데이터와 주소를 메모리한테 줘서 메모리가 그 자리에 저장. 당연히 원래값 덮어써짐
  5. RAM & ROM

    • ROM은 SSD나 HDD같은게 아니라 메인보드에 있는 아주 작은 메모리를 말함
    구분RAMROM
    이름Random Access MemoryRead-Only Memory
    주소로 원하는 위치 접근가능가능
    읽기가능가능
    쓰기자유롭게 가능종류에 따라 불가능하거나 별도 절차로 가능
    전원을 끄면내용이 사라짐 (휘발성)내용이 유지됨 (비휘발성)
    주요 저장 내용실행 중인 프로그램과 데이터부팅·초기화에 필요한 기본 프로그램
  6. 기억장치 용량

    • 2^10승씩 늘어남

2.2.2 장기간 데이터의 저장

  1. 보조기억장치(Secondary Storage)
    • 싸고 양많고 느리고 비휘발성
    • 프로그램이 실행될 때: 보조기억장치 -> 주기억장치 -> 레지스터 -> CPU
    1. HDD: 자기로 저장
    2. SSD, USB: 반도체로 저장
    3. CD, DVD: 광학으로 저장

HDD

  • 플래터: 원판
  • 트랙: 원판안에 새겨진 경로
  • 섹터: 트랙을 잘게 나눈 영역
  • 헤드: 읽는 핀같은거
  • 탐색시간: 헤드가 트랙까지 이동하는 시간
  • 회전 지연: 원판돌아서 섹터가 원하는부분으로 오는 시간
  • 전송시간: 실제로 읽거나 쓰는 시간

플래시 메모리

  • 비휘발성 반도체 메모리
  • NAND방식, 전하 넣고 빼서 0, 1표현
  • 작고 가볍고 충격에 강함
  • 쓰기 횟수에 한계
  • 저장: 0, 비저장: 1(반대임)

SSD

  • NAND 플래시 + 컨트롤러
  • 컨트롤러: 읽기, 쓰기, 저장위치를 관리, 수명 관리
  • 작고, 조용하고 충격에 강하고 전력효율 좋지만 비싸고 쓰기수명제한있음
  1. SATA: HDD때부터 써오던 인터페이스, 느림.
  2. NVMe: SSD용으로 설계된 통신규격, PCIe로 연결
  • M.2: 크기, 연결 모양 규격. M.2라고 다 NVME는 아님.

2.2.3 보조기억장치의 선택과 사용

  1. 목적따라 원하는 저장장치 선택

  2. 저장장치 사용 순서

    1. 파티션: 저장공간 파티션으로 나누기
    2. 포맷: 그 영역에 파일 시스템 만들기
    • 파일시스템: 파일이랑 폴더를 저장하고 찾는 구조와 규칙
  3. 대표적인 파일 시스템

    파일 시스템주요 용도
    NTFSWindows의 내부 HDD·SSD
    exFATWindows와 macOS 사이에서 공유하는 USB·외장 SSD
    APFSMac을 비롯한 Apple 기기
    ext4Linux 시스템

2.3 비트패턴을 이용한 정보 표현

2.3.1 문자의 표현

  1. 문자 코드(Character Code)

    • 문자가 숫자로 저장됨
    • 주고받는 쪽이 같은 문자코드 사용해야함
    • ex) ASCII, UNICODE
  2. ASCII

    • 2^7가지 저장.(7비트)
    • 컴퓨터에서는 앞에 0을 하나 더 붙여서 1바이트로 저장함.
    • 한글같은거 표현 불가
  3. UNICODE

    구분유니코드 (Unicode)UTF-8
    하는 일전 세계 문자와 기호에 고유한 번호(코드 포인트)를 부여코드 포인트를 실제 바이트로 변환 (인코딩)
    표기U+ 뒤에 16진수 (A → U+0041, 가 → U+AC00)바이트 열 (가 → 11101010 10110000 10000000)
    바이트 수정하지 않음코드 포인트에 따라 1~4바이트
  • 영어는 아스키와 마찬가지로 1바이트. 옛날 영어파일과 호환.
  • 한글은 한자리에 보통 3바이트. 이 바이트 전환은 utf-8에서 일어남

2.3.2 숫자의 표현

구분문자열 "25"정수 25
구성문자 '2'와 '5' 두 개하나의 수
저장 방법문자마다 문자 코드로 따로 저장수 전체를 이진수로 변환해 저장
저장 예00110010 00110101 ('2' = 50, '5' = 53)00011001 (8비트)
산술 계산그대로는 불가가능
용도화면 표시, 이름, 전화번호덧셈·곱셈 같은 계산

정수

  • 양수는 그대로 이진수로 표현
  • 음수는 보통 2의 보수로 표현
  • 비트 수가 정해지면 표현 범위도 정해짐
  • 8비트 범위
    • 부호 없음: 0~255
    • 부호 있음: -128~127
    • 오버플로우: 계산 결과가 표현 범위를 벗어나는 것(양수에서 255 넘어가거나 음수에서 -129 넘어가는 것)

실수

  • 부동소수점: 아주 크거나 작은 수를 표현하는 방법, 부호, 지수, 가수(유효숫자) 세 부분으로 나눠서 저장. IEEE 754가 표준(float, double)
  • 표현오차: 비트수가 한정되어서 나오는 오차. 가장 가까운 값으로 저장

2.3.3 이미지의 표현

대분류: 래스터 VS 벡터

래스터 이미지

  1. 이미지를 픽셀 격자로 표현
  2. 픽셀은 디지털 이미지를 이루는 가장작은 단위
  3. 픽셀마다 위치랑 색상값을 비트로 저장
  4. 사진처럼 색이 복잡하게 바뀌는 이미지에 적합

픽셀

  • RGB의 밝기를 섞어 색을 표현(성분 하나당 8비트)
  • 한 픽셀의 크기 = 8*3 = 24비트, 2^24가지 색을 표현 가능
  • 19201080 이미지의 압축전 데이터 양 = 19201080*24 = 49.8Mb = 6.2MB
  • 해상도: 이미지의 가로세로 픽셀수, ex)19201080
  • 픽셀화: 래스터 이미지를 확대하면 픽셀 경계가 보이는 현상

벡터 이미지

  • 점, 선, 곡선, 도형을 수학적 정보로 표현
  • 픽셀 배열이 아니라 도형을 그리는 방법을 저장
  • 확대하거나 줄여도 경계가 유지됨
  • 로고에 어울림

래스터 vs 벡터

구분래스터 이미지벡터 이미지
표현 방법픽셀의 색상값점·선·곡선·도형 정보
확대픽셀이 보일 수 있음경계가 선명하게 유지
적합한 대상사진로고·아이콘·도형
대표 형식JPEG, PNG, GIF, WebPSVG

이미지 압축

  • 무손실 압축: 정보 손실이 없음(캡처, 경게가 뚜렷한 그림에 어울림)
  • 손실 압축: 정보 손실이 있음(사진에 어울림)

대표 이미지 파일 형식

형식·확장자이미지 유형압축·표현 특징주요 용도
JPEG (.jpg, .jpeg)래스터손실 압축, 투명도 미지원사진
PNG (.png)래스터무손실 압축, 투명도 지원그림·문서 화면
GIF (.gif)래스터무손실 압축, 최대 256색, 애니메이션 지원간단한 애니메이션
WebP (.webp)래스터손실·무손실 압축, 투명도·애니메이션 지원웹 이미지
SVG (.svg)벡터도형 정보를 텍스트로 저장로고·아이콘·도형

데이터 특징을 이용한 압축

방식원리예효과적인 경우
반복 길이 부호화 (RLE)같은 값이 연속되면 값과 반복 횟수로 표현0,0,0,0,0,1,1,1 → (0,5)(1,3)동일한 색상이 반복되는 단순한 이미지
허프만 코드 (Huffman Code)자주 나타나는 값에 짧은 코드, 드물게 나타나는 값에 긴 코드geese: e=0, g=10, s=11 → 1000110값의 출현 빈도 차이가 클 때
차분 부호화 (Difference Encoding)값 자체보다 이전 값과의 차이를 저장23,24,25,25 → 23,1,1,0인접한 픽셀의 색상값이 비슷할 때 (오디오·비디오 압축에도 활용)

2.3.4 동영상의 표현

  • 동영상 = 연속된 이미지
  • 프레임: 정지 이미지 1장
  • 영상+오디오
  • 프레임률: 1초 동안 보여주는 프레임 수, 단위: fps, 1초에 30장이면 30fps
  • 압축 전 데이터양 = 가로 픽셀 수 × 세로 픽셀 수 × 픽셀당 비트 수 × 초당 프레임 수 × 재생 시간(초)

동영상 압축

  1. 공간적 중복: 프레임 하나 안에서 반복되는 이웃 색깔 압축
  2. 시간적 중복: 이전 프레임에서 달라진 부분 중심으로 저장

코덱과 컨테이너

구분코덱 (Codec)컨테이너 (Container)
정의영상·오디오를 표현·압축하고 복원하는 규칙영상·오디오·자막과 재생 정보를 하나의 파일에 담는 형식
하는 일데이터 압축·복원여러 데이터의 재생 순서와 동기화 관리
예비디오: H.264, H.265, AV1 / 오디오: AAC, MP3MP4, MOV, MKV, WebM
  • MP4 파일이 만들어지는 과정
    1. 영상 데이터 → H.264로 압축
    2. 오디오 데이터 → AAC로 압축
    3. 자막·재생 시간 정보
    4. 1~3을 MP4 컨테이너에 담음 → video.mp4
  • 확장자가 같은 MP4여도 안에 든 코덱은 다를수있다
    • video1.mp4 → H.264 영상 + AAC 오디오
    • video2.mp4 → H.265 영상 + AAC 오디오

2.3.5 오디오의 표현

  • 오디오는 아날로그여서 디지털로 변환하는과정이 필요함

변환 4단계

  1. 변환: 마이크가 소리를 연속적인 전기 신호로 바꿈
  2. 샘플링: 일정한 시간 간격으로 신호의 크기를 잼
  3. 양자화: 잰 값을 정해진 구간의 숫자로 변경
  4. 부호화 위 숫자를 비트 패턴으로 저장

품질과 데이터 양을 정하는 3가지

  1. 샘플링 주파수: 1초에 소리를 몇번 재는지(단위: Hz)
  2. 비트 깊이: 한 번 잰 값을 몇 비트로 표현 하는지
  3. 채널: 독립적으로 저장하는 소리의 수

셋 다 커질수록 품질, 데이터 양이 늘음

압축 전 데이터양 = 샘플링 주파수 × 비트 깊이 × 채널 수 × 재생 시간(초)

오디오 파일 vs MIDI

  • 오디오 파일은 녹음이고 MIDI는 악보이다.
구분오디오 파일MIDI 파일
저장 내용실제 소리를 측정한 값음표·악기·세기·시간 등의 연주 명령
재생 방법저장된 소리를 복원전자 악기가 명령에 따라 소리를 생성
재생 결과녹음된 소리를 재생재생 장치와 음원에 따라 달라질 수 있음
데이터양상대적으로 큼상대적으로 작음
적합한 용도음성·음악·환경음 녹음전자음악 작곡·악기 연주 제어
대표 확장자.wav, .flac, .mp3, .m4a.mid

PCM과 저장 방식

  • PCM: 소리를 일정한 간격으로 재서 숫자로 표현한느 방식. 변환 4단계를 거친 데이터가 PCM 데이터
    저장 방식압축파일주요 특징
    PCM주로 비압축WAV (.wav)측정값을 주로 그대로 저장하여 용량이 큼
    FLAC무손실.flac파일 크기를 줄이면서 원본을 정확히 복원
    MP3손실.mp3일부 정보를 줄여 파일 크기를 크게 감소
    AAC손실.m4a, .mp4효율적인 압축으로 동영상·스트리밍에 활용
  • PCM은 파일 형식이나 압축 코덱이 아니라 디지털 오디오 데이터의 표현 방식

2.4 숫자의 표현

2.4.1 2진수의 표현과 계산

  • 2진수 → 10진수
  • 10진수 → 2진수
  • 2진수 덧셈

2.4.2 정수의 표현

2의 보수

  • 요즘 컴퓨터가 부호 있는 정수를 표현하는 대표 방식

  • MSB가 0이면 0 또는 양수, 1이면 음수

  • 음수 만드는 법

    1. 모든 비트 뒤집기(0 ↔ 1)
    2. 1을 더하기
    3. 원래 비트 수에 맞추기
    4. 표현 범위: 2^n개 0이 양수쪽에 들어가기에 음수쪽이 하나 더 많다.
    4비트로 −3 만들기
    3       0011
    뒤집기   1100
    +1      1101   →  −3 = 1101₂
    
    • 넘친 비트는 버린다
    • 연산 했을 떄 10진수 값이 음수면 뒤집고 +1 한번 더하고 msb에 1 달아서 음수 표시하기
     −1 + −2           1 + −2           −1 + 2
       1111              0001             1111
     + 1110            + 1110           + 0010
     ------            ------           ------
     (1)1101 = −3        1111 = −1      (1)0001 = 1
      ↑ 버림                              ↑ 버림
    
    • 오버플로: 계산 결과가 표현 범위를 벗어나는 것
    4비트에서 7 + 2
       0111  (+7)
     + 0010  (+2)
     ------
       1001  → −7로 해석됨 (9는 4비트 범위 −8~7 밖)
    

2.4.3 실수의 표현

  • 2진 소수: 소수점 왼쪽은 2^-n

  • 정규화: 맨 앞자리가 1이 되도록 소수점을 옮기고, 옮긴 자리수만큼 2^n을 곱한다.

  • 고정소수점: 정규화 하기 전 숫자.(단순하지만 표현범위가 좁음)

  • 부동소수점: 정규화 한 후 숫자.(아주 큰 수 표현 가능하지만 오차 발생 가능)

  • 예) 5.75 (고정소수점은 정수 4비트 + 소수 4비트로 가정)

    구분5.75의 표현소수점 위치
    고정소수점0101.1100₂미리 정한 위치에 고정
    부동소수점1.0111₂ × 2²지수에 따라 결정
    • 고정소수점 표현 범위: 0 ~ 15.9375 (1111.1111₂), 간격 2⁻⁴ = 0.0625 → 16 이상이나 0.03처럼 간격에 안 맞는 값은 정확히 표현 불가
    • 부동소수점: 같은 유효숫자도 지수를 바꿔 소수점 이동 (1.0111₂ × 2² = 5.75, × 2¹⁰ = 1472, × 2⁻⁶ = 0.0224609375)

초과 표기법(바이어스)

  • 지수가 음수일 수 있어서 실제 지수에 일정한 값(바이어스)를 더해서 저장.

  • 지수부에 부호 비트를 따로 안둔다.

  • 저장지수 = 실제지수 + 바이어스

  • float의 바이어스는 127

    실제 지수계산저장 지수8비트 표현
    −2−2 + 12712501111101
    00 + 12712701111111
    22 + 12712910000001

IEEE 754

구분전체부호지수부가수부(소수 부분)지수 바이어스
단정도 float32비트1비트8비트23비트127
배정도 double64비트1비트11비트52비트1,023
  • 정규화한 수에서 맨 앞의 1은 저장하지 않음.
  • double은 가수부가 길어서 더 정밀
  • 지수부 특수 패턴
    • 지수부가 전부 0이면 0이거나 0에 아주 가까운 수
    • 지수부가 전부 1이면 무한대거나 NaN
    • 따라서 정상적인 수는 그 사이 값만 사용(float의 경우 -126~127)

float로 저장하는 4단계

  • ex) 101.11₂를 32비트 float로
  1. 정규화 (1.0111₂ × 2²)
  2. 부호비트 (양수이므로 0)
  3. 지수부 (2+ 127 = 129 = 10000001)
  4. 가수부 (첫째 자리 1을 빼고 01110000000000000000000)
  • 최종: 0 10000001 01110000000000000000000
  • 부호 지수(8) 가수(23)
  • 표현오차 있을 시 가장 가까운 값으로 반올림해서 저장