데이터

Bit

메모리는 데이터를 저장하는 부품이다. 컴퓨터가 사용하는 데이터는 비트(Bit : Binary + Digit)로 저장된다.

  • Bit = 2가지 상태를 나타낼 수 있는 숫자
    : 비트에 저장할 수 있는 데이터는 무엇이든지 상관 없다.(추상적이여도 상관없다.)
    : 비트가 나타낼 수 있는 상태는 오직 2가지(= n개의 bit = 2^n로 나타낼 수 있다.)
    : 비트 1가지만으로 데이터를 저장할 수 없다. > 비트를 묶어 바이트(Byte)로 데이터를 다룬다.
  • 1 byte = 8 bit
    : 2^8 = 256개의 정보를 표현

1 byte = 8bit
1 KB = 1,000 byte
1 MB = 1,000 KB
1 GB = 1,000 MB
1 TB = 1,000 GB

  • 워드(Word) : CPU가 한번에 처리할 수 있는 데이터의 크기
    : 하프 워드(Half Word) = 50%
    : 풀 워드(Full Word) = 100%
    : 더블 워드(Double Word) = 200%

Endian

엔디안(Endian)은 비트를 저장하는 방식

  • 리틀 엔디안 (Little endian)
    :첫 번째 바이트가 최하위 비트(LSB : Least Significant Bit)
  • 빅 엔디안(Big endian)
    : 첫 번째 바이트가 최상위 비트(MSB : Most Signignificant Bit)

이진법

이진수 8 표기
1) 수학적 표기 : 1000(2)
2) 코드 상 표기 : Ob1000

  • 컴퓨터 내부에서 어떤 수를 다룰 때는 이 수가 양수인지 음수인지 구분하기 위해 플래그(flag)를 사용한다.

우리가 사용하는 수의 체계는 십진법이다. 즉, 각 자리수를 0에서 9까지 사용하고, 자리수가 올라갈 수록 10배씩 커지게 된다.
하지만 비트는 2가지의 의미만 담을 수 있기에 이진법을 사용한다.
따라서 십진수 > 이진수, 이진수 > 십진수로 바꿀 수 있어야 한다.

이진수의 음수는 2의 보수법을 사용한다.
MSB(Most Significant Bit)를 부호 비트로 사용하여 0 이면 양수, 1이면 음수로 취급한다.

  • sbyte는 MSB를 가지며, 정수와 음수를 가진다.
  • byte는 부호를 가지지 않는다.
  • 음수 : 절댓값 > 2진법 > 보수법 > +1
  • 반대(음수>정수) : -1 > 보수**

MSB 란?
최상위 비트를 말한다. 반대는 LSB(Least Sigificant Bit)다.

이진법

2의 보수법

정수 타입의 표현 가능 범위


십육진법

십육진수 15 표기
1) 수학적 표기 : 15(16)
2) 코드 상 표기 : Ox15

2진법을 이용하면 숫자의 길이가 너무 길어진다는 단점이 있기에 십육진법을 이용하여 표현해줍니다. 십육진법은 자리수가 15를 넘어가는 시점에서 자리 올림을 하는 숫자 표현 방식입니다.

십진수 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
십육진수 : 0 1 2 3 4 5 6 7 8 9 A B C D E F 10...

  • 십육진수는 열여섯 종류로 표현 : 0~9, A~F

문자 집합

문자 집합(Character Set)은 컴퓨터가 인식하고 표현할 수 있는 문자의 모음으로 각 문자에는 이진수가 할당되어 있다.

  • 문자 인코딩(Character Encoding) : 문자를 이진수(0, 1)로 변환하는 과정
  • 문자 디코딩(Character Decoding) : 이진수를 사람이 이해할 수 있는 문자로 변환하는 과정
  • 문자의 모양을 폰트(Font)라고 한다.

코드 페이지(Code Page) : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
코드 포인트(Code Point) : 글자에 부여된 고유한 값


01. 아스키 코드(ASCII : American Standard code for Information Interchange)

알파벳 + 아라비아 숫자 + 일부 특수 문자를 포함하는 문자 집합이다. 7비트를 사용해서 총 128개의 문자를 표현한다. 아스키 코드는 인코딩이 매우 간단하지만, 영어밖에 표현할 수 없다.
추후 8비트의 확장 아스키가 등장했지만, 이 또한 256개밖에 표현할 수 없어 수 많은 문자를 표현하기에는 부족했다.

아스키 코드

02. EUC-KR

아스키 코드는 영어밖에 표현할 수 없어 각 나라마다 그들의 언어를 표현하기 위한 인코딩이 필요했다. 한글은 각 음절이 초성, 중성, 종성의 조합으로 구성되는데, 이를 표현하는 방법에는 완성된 하나의 글자에 코드 포인트를 부여하는 완성형 인코딩과 초성, 중성, 종성을 위한 각각의 비트열을 할당하여 하나의 글자를 만드는 조합형 인코딩이 있다.

  • 완성형 인코딩 예시 : '가'는 1, '나'는 2, '다'는 3
  • 조합형 인코딩 예시 : ㄱ + ㅏ + ㅇ

EUC-KR은 KS X 1001, KS X 1003의 문자 집합을 기반으로 하는 완성형 인코딩으로, 결합된 한글 단어에 2바이트 크기의 코드를 부여한다. 이는 2,350개 정도의 한글 단어를 표현할 수 있었다. 하지만, 이 역시도 11,172자나 되는 모든 한글 조합을 표현하기엔 부족했다.

03. 유니코드(Unicode)

대부분의 언어를 아우르는 문자 집합과 통일된 표준 인코딩 방식이 필요했는데 이것이 유니코드(Unicode)이다. 유니코드는 각 나라의 문자 + 이모티콘 + 여러 특수 기호로 이루어져 있다. 인코딩 방법에는 UTF-8, UTF-16, UTF-32 등이 있는데, 이중 UTF-8을 가장 많이 사용하고 있다.

C#에서 문자 타입은 char(Character)이며, UTF-16을 사용하고 있다.

유니코드
https://home.unicode.org/

Char
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/char


혼자 공부하는 컴퓨터구조 + 운영체제
02. 데이터 (54p - 71p)

교안

0개의 댓글

Powered by GraphCDN, the GraphQL CDN