컴퓨터 구조 2강 - 데이터 표현

soo·2022년 7월 12일
0

컴퓨터구조

목록 보기
2/6

2.1 디지털 시스템

학습내용

  • 디지털 시스템 정의
  • 물리 신호에 숫자를 대응시키는 방법
  • 컴퓨터가 2진수를 사용하는 이유

📍 디지털 시스템이란?

  • digit(숫자) + al(-의)
  • 숫자로 표현된 데이터를 처리(계산)하는 시스템
  • 컴퓨터는 디지털 시스템의 일종
  • 실세계(real-world)는 아날로그(analog)

  • 연속적인 값(continuous value)

  • 신호 변환
    실세계(아날로그) ➡️ A/D 변환기 ➡️ 컴퓨터(디지털)
    실세계(아날로그) ⬅️ D/A 변환기 ⬅️ 컴퓨터(디지털)
    👉 A/D: Analog to digital
    👉 D/A: Digital to Analog

📍 숫자 표현

  • 사람은 10진수 사용
  • digit: 자릿수, 손가락(손가락으로 10개의 다른 기호를 표현한다.)
  • 아라비아 숫자: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 기계는 2진수 사용: 안정된 상태가 2개인 물리신호를 0, 1로 매핑
    스위치: off / on
    OCR: 표지가 없음 / 까만색
    펀치 카드: 구멍을 뚫지 않음 / 구멍을 뚫음
    전기 신호: 전류가 흐르지 않음 / 흐름
    자기(자석): N극 / S극

📍 2진수 시스템

  • 2진수로 표현된 데이터를 처리하는 시스템
  • 비트 (bit) = binary + digital: 2진수 한 자리, 0 or 1

📍 2진 데이터의 단위

  • 1 ➡️ 비트
  • 4 ➡️ 니블 (nibble)
  • 8 ➡️ 바이트
  • MSB: Most Significant Bit. 2진수 맨앞자리
  • LSB: Least Significant Bit. 맨 뒷자리
  • MSD: Most Significant Digit

2.2 수의 체계

학습 내용

  • 수를 표현하는 원리 (weighted number)
  • R진수의 표현과 크기

2.2.1 10진수

  • 무게 수 (weighted number): 각 자리에 오는 숫자는 무게가 있다.
  • 1234.56
    기호(symbol): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
    자리에 따라 무게가 다르다.
    1234.56 = 1 10^3 + 2 10^2 + … + 5 10^(-1) + 6 10^(-2)

2.2.2 R진수

📍 R진법의 수

  • 기호(symbol): {0, 1, …, R-1}
  • 각 자리의 무게: R

2.2.3 수의 표현 범위

📍 수의 종류

  • 부호 없는 수(unsigned number): 0을 포함한 양수
  • 정수(signed number): …, -1, 0, 1, … (음수, 0, 양수)
  • 실수(real number): 소수점을 포함하는 수

📍 n진수로의 표현

  • R^n = 10…0 (0이 n개)

📍 수의 표현 범위

  • 10진수 n자리: 0 ~ 10^n - 1 = 0 ~ 9…9 (9가 n개)
  • R진수 n자리: 0 ~ R^n - 1

2.3 진법 변환

2^10 = 1K (정확히는 1000 vs 1024로 다르기는 하지만 근사값)
2^16 = 64K
2^19 = 512K

2^20 = 1Mega
2^24 = 16Mega
2^27 = 12Mega

2^30 = 1Giga
2^32 = 4Giga
2^34 = 16Giga

2^40 = 1Tera
2^43 = 8Tera
2^47 = 128Tera

2^14 = 16K
2^19 = 512K
2^25 = 32M
2^28 = 256M
2^32 = 4G
2^43 = 8T


2.4 코드

  • 숫자 이외의 데이터를 2진수로 표현하는 방법
  • 코딩: 문자, 유한 집합
    코드를 만든다 👉 집합의 원소에 숫자를 부여하는 것
  • 샘플링(AD 변환): 신호, 음성, 영상

2.4.1 인코드와 디코드

📍 코드

  • 유한 개의 원소로 구성된 집합에 대해
    각 원소를 서로 구별할 수 있도록 각 원소에 부여하는 숫자

📍 코드 길이의 종류

  • 고정 길이 코드: 원소에 부여된 2진수의 길이가 같다.
  • 가변 길이 코드: 원소에 부여된 2진수의 길이가 다르다.

📍 동작

  • 인코드(encode): 원소 기호 >>> 코드
  • 디코드(decode): 코드 >>> 원소 기호 (해독)

📍 코드 예제

{♠️, ♦️, ♥️, ♣️}에 대한 코드

집합의 원소코드 1코드 2코드 3코드 4
♠️0100101
♦️101101111
♥️11011110110
♣️1110111111000
  • 집합의 원소들에 숫자를 부여한 것이 코드
    ♠️♦️♥️♣️ ➡️ 0_10_110_1110 (인코드)
    0_10_110_1110 ➡️ ♠️♦️♥️♣️ (디코드)
  • 코드 1의 특성: 0을 기준으로 파싱 👉 가변길이 코드
  • 코드 2의 특성: 인코드는 가능하지만 111111와 같은 값을 디코딩하는 것은 불가 👉 ❌NG
  • 코드 3의 특성: 2진수 2자리씩 할당. 디코드 시 2자씩 끊어 읽으면 됨 👉 고정길이 코드
  • 코드 4의 특성: 3비트씩 할당. 3비트 고정길이 코드. 비트의 낭비가 발생

📍 고정길이 코드 비트 수

  • 집합의 원소 수가 N일 때, 고정길이 코드의 비트 수는? 👉 [log2N][log_2N]
  • 예) 원소 수 10개일 때 [log210][log_2 10] = [3.32192...][3.32192...] = 4
    따라서 10개의 원소를 표현하는 최소 비트 수는 4

2.4.2 이진화 십진 코드

  • 10진수를 코드로 만든 이진수
  • BCD (Binary Coded Decimal)
10진수 기호0123456789
8421 BCD 코드0000000100100011010001010110011110001001
3초과 BCD 코드0011010001010110011110001001101010111100
  • 3을 0이라 보는 것. 위의 숫자에 +3
  • 8421 BCD 코드가 일반적

📍 자보수(self-complementary) 특성

  • 보수: 0을 1로, 1을 0ㅇ으로 바꾼 수
  • [X + (X의 보수) = 9에 대한 코드]의 특성
  • 8421 BCD 코드는 자보수 특성이 없고 3초과 BCD 코드는 자보수 특성이 있다.

📍 예제) (1225)10(1225)_10

  • 8421 BCD 코드: 0001 0010 0010 0101
  • 3초과 BCD 코드: 0100 0101 0101 1000

📍 예제) 10진수 2에 대한 자보수 특성 확인

  • 8421 BCD 코드: ❌
  • 3초과 BCD 코드: ⭕️

2.4.3 문자 코드

  • ASCII(American Standard Code for Information Interchange)
  • 대문자 A 👉 0(디폴트) 100(아스키코드 대문자 A값 1) 0001(아스키코드 대문자 A값 2)
    👉 01000001 (16진수로 41)
  • "Good " 👉 47 6F 64 64 20(공백)
  • 제어용 코드 + 알파벳

📍 패리티 비트

  • 아스키 코드에서 원래의 2진수 앞에 들어가는 1자리
  • 데이터가 올바른지 검사하기 위해 추가되는 비트
  • 짝수 패리티: 1의 개수가 짝수가 되도록 추가하는 비트
  • 홀수 패리티: 1의 개수가 홀수가 되도록 추가하는 비트
  • 예제 1)
    A = (아스키코드) 41 (_100_001)
    👉 1의 개수 2개니깐 앞자리엔 0
    👉 (짝수) 0100_001 (41) (홀수) 1100_001 (C1)
  • 예제 2)
    T = (아스키코드) 54 (_101_0100)
    👉 (짝수) 1101_0100 (D4) (홀수) 0101_0100 (54)
    데이터 검증을 위한 용도로 나중에 자세히

📍 유니코드

  • 세계 각국의 언어 표현
  • 국제적으로 통용되는 16비트 문자 체계
  • 1991년에 버전 1.0, 현재 2018년 11.0

📍 유니코드의 배치

  • U+0000 ~ U+007F 영역에 영문자 배치
  • 이후 여러 나라 문자
  • 한글은 U+AC00부터 U+D7A3까지 11,172글자 정의
  • 문서편집기의 문자표에서 유니코드 확인 가능
profile
기록+기록

0개의 댓글