[컴퓨터 구조] 컴퓨터가 이해하는 정보 단위 - 데이터

cosmos-JJ·2023년 10월 2일
0

Computer Science

목록 보기
1/15
post-thumbnail

컴퓨터가 이해하는 정보 단위 - 데이터

컴퓨터는 0과 1로 모든 정보를 표현하고, 0과 1로 표현된 정보만을 이해할 수 있다.
그리고 이렇게 0과 1로 표현되는 정보에는 크게 데이터(data)명령어(instruction)가 있다.

데이터

  • 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
  • 컴퓨터와 주고받는 정보나 컴퓨터에 저장된 정보를 가리킬 때 통칭하는 말

정보 단위

비트(bit) : 0과 1을 나타내는 가장 작은 정보 단위

⬇ 프로그램의 크기를 말할 때 사용하는 표현⬇
바이트(byte) == 8비트
1 킬로바이트(kB) == 1,000바이트
1 메가바이트(MB) == 1,000킬로바이트
1 기가바이트(GB) == 1,000메가바이트
1 테라바이트(TB) == 1,000기가바이트



워드(word) : CPU가 한 번에 처리할 수 있는 데이터 크기

하프 워드(half word) : 워드의 절반크기
풀 워드(full word) : 워드의 1배 크기
더블 워드(double word) : 워드의 2배 크기


0과 1을 숫자로 표현하는 방법

이진법(binary)

  • 0과 1만으로 모든 숫자를 표현하는 방법

표기 방법
① ex) 1000(2)
② ex) 0b1000


음수 표현

  • 2의 보수(two's complement)를 구해 이 값을 음수로 간주
    ① 사전적 의미 : 어떤 수를 그보다 큰 2ⁿ에서 뺀 값
    ② 쉽게 풀기 : 모든 0과 1을 뒤집고, 거기에 1을 더한 값
❗ 1의 보수 : 모든 이진수의 1과 0을 뒤집은 수 
❗ 2의 보수 : 1의 보수에 1을 더한 값
❗ 플래그(flag) : 컴퓨터 내부에서 이 수가 양수인지 음수인지를 구분하기 위해 사용하는 것

2의 보수 표현의 한계

  • 0이나 2ⁿ형태의 이진수에 2의 보수를 취하면 원하는 음수값을 얻을 수 없다.
0을 음수로 표현하기

0000 ➡(모든 수 뒤집기) 1111 ➡(1을 더하기) 10000

❗ 이런 경우 자리 올림이 발생한 비트의 1을 버린다.
2³을 음수로 표현하기

1000 ➡(모든 수 뒤집기) 0111 ➡(1을 더하기) 1000

❗ 이런 경우 음수가 자기 자신의 되버리는 경우는 본질적으로 해결하기 힘들다.
❗ 즉, n비트로틑 -2ⁿ과 2ⁿ을 동시에 표현할 수 없다.

십육진법(hexadecimal)

  • 수가 15를 넘어가는 시점에 자리 올림하여 수를 표현하는 방법

표기 방법
① 수학적 표기 방식 : 15(16)
② 코드상 표기 방식 : 0x15


십육진수를 이진수로 변환

ex) 1A2B

⬇각 자리를 이진수로 변환⬇
- 1 == 0001(2)
- A == 1010(2)
- 2 == 0010(2)
- B == 1011(2)

즉 1A2B(16) = 0001101000101011(2)

0과 1을 문자로 표현하는 방법

문자 집합(character set) : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
문자 인코딩(character encoding) : 문자를 0과 1로 변환하는 과정
문자 디코딩(character decoding) : 0과1로 이루어진 문자 코드를 문자로 변환하는 과정

아스키 코드

  • 초창기 문자 집합 중 하나
  • 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자 표현 가능
  • 코드 포인트(문자를 부여된 값) 사용
  • 7비트로 하나의 문자 표현
    - 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit)
  • 장점 : 간단한 인코딩
  • 단점 : 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현 불가
    - 128개보다 많은 문자를 표현할 수 없음
    • 8비트인 확장 아스키가 등장하였지만 여전히 부족

EUC-KR

한글 인코딩 : 완성형 vs 조합형 인코딩
①완성형 : 홍 + 길 + 동
②조합형 : ㅎ + ㅗ + ㅇ

EUC-KR

  • 완성형 인코딩
  • 한 글자에 2바이트 크기의 코드 부여
  • 2바이트 == 16비트
  • 2300여 개의 한글 표현 가능
  • EUC-KR 확장형 -> 마이크로소프트의 CP949 (Code Page 949)
  • 문제점 : 언어별 인코딩을 국가마다 하게 되면 다국어를 지원하는 프로그램을 개발할 때엔 언어별 인코딩 방식을 모두 이해해야 함

유니코드와 UTF-8

유니코드

  • 통일된 문자 집합
  • 한글, 영여, 화살표와 같은 특수 문자, 심지어 이모티콘까지 표현 가능
  • 현대 문자 표현에 있어 매우 중요한 위치
  • 유니코드의 인코딩 방식 : UTF-8, UTF-16, UTF-32∙∙∙

UTF-8 인코딩

  • 가장 대중적으로 사용
  • UTF(Unicode Transformation Format) == 유니코드 인코딩 방법
  • 가변길이 인코딩 : 인코딩 결과가 1바이트 ~ 4바이트
  • 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다름

참고

  • 혼자 공부하는 컴퓨터 구조 + 운영체제 (강민철 지음)
profile
🤍도전하는 건 즐거워요🤍

0개의 댓글