개발자꿈나무

데이터 본문

CS

데이터

망재이 2023. 6. 30. 13:28

★ 정보 단위

  • 비트(bit) : 0과 1을 나타내는 가장 작은 정보 단위
  • n개의 비트로 표현할 수 있는 정보는 2의 n제곱
1바이트(byte) 8비트(bit)
1킬로바이트(1kB) 1,000바이트(1,000byte)
1메가바이트(1MB) 1,000킬로바이트(1,000kB)
1기가바이트(1GB) 1,000메가바이트(1,000MB)
1테라바이트(1TB) 1,000기가바이트(1,000GB)

 

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

 * 하프워드(half word) : 워드의 절반 크기

 * 풀워드(full word) : 워드의 1배 크기

 * 더블워드(double word) : 워드의 2배 크기

 

 

★ 이진법

  • 0과 1로 모든 숫자를 표현하는 방법 => 숫자가 1을 넘어가는 시점에 자리 올림
  • 이진수 : 이진법으로 표현한 수
  • 십진법 : 0부터 9까지 열개의 숫자만으로 모든 숫자를 표현하는 방법 => 숫자가 9를 넘어가는 시점에 자리 올림
  • 십진수 : 십진법으로 표현한 수
  • 이진수를 표기할 때 아래첨자를 쓰거나 0b를 붙임

ex) 0b1000

 

⭐︎ 이진수의 음수 표현

  • 2의 보수를 구해 이 값을 음수로 간주하는 방법
  • ‘모든 0과 1을 뒤집고, 거기에 1을 더한 값’
  • 모든 이진수의 0과 1을 뒤집을 수를 1의 보수라고 하고, 거기에 1을 더한 값을 2의 보수라고 함. 컴퓨터는 이 수를 음수로 간주!
  • 이진수만 봐서는 이게 음수인지 양수인지 구분하기 쉽지 않음! => 컴퓨터 내부에서 이를 구분하기 위해 플래그를 사용
  • 플래그 : 부가 정보

 * 2의 보수 표현의 한계 : 2의 n제곱에 2의 보수를 취하면 자기 자신이 되어 버림

 

 

★ 십육진법

  • 수가 15를 넘어가는 시점에 자리 올림을 하는 숫자 표현 방식
  • 십진수 10, 11, 12, 13, 14를 각각 A, B, C, D, E, F로 표기
  • 십육진수를 표기할 때 아래첨자를 쓰거나 0x를 붙임

ex) 0x15

 

⭐︎ 십육진수를 이진수로 변환하기

  • 십육진수를 이루는 숫자 하나를 이진수로 표현하려면 2의 4제곱 => 4비트가 필요
  • 십육진수 한 글자를 4비트의 이진수로 간주하고 각 글자를 따로따로 이진수로 변환한 후 그대로 이어 붙이면 끝

ex) 1A2B => 1, A, 2, B => 1 (0001) , A (1010) , 2 (0010) , B (1011) => 0001101000101011

 

⭐︎ 이진수를 십육진수로 변환하기

  • 이진수 숫자를 네 개씩 끊고, 끊어준 네 개의 숫자를 하나의 십육진수로 변환

ex) 11010101 => 1101 / 0101 => D / 5 => D5

 

 

★ 문자 집합과 인코딩

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

 

 

★ 아스키 코드

  • 아스키는 초창기 문자 집합 중 하나로, 영어 알파벳 아라비아 숫자 일부 특수 문자를 포함
  • 아스키 문자들은 각각 7비트로 표현
  • 총 2의 7제곱인 128개의 문자를 표현할 수 있음

 * 실제로는 8비트를 사용하지만 1비트는 패리티 비트(오류 검출을 위해 사용)이므로 실질적으로 사용되는 비트는 7비트

  • 매우 간단하게 인코딩되지만, 한글뿐만 아니라 아스키 문자 외의 문자를 표현할 수 없음
  • 아스키 코드에 1비트를 추가한 8비트의 확장 아스키가 등장하지만, 가능한 문자 수는 256개로 턱없이 부족함
  • 한국을 포함한 영어권 외의 나라들은 자신들의 고유한 문자 집합과 인코딩 방식을 만들게 됨

 

 

★ EUC-KR

  • 한글 인코딩에는 두 가지 방식이 존재함
    * 완성형 인코딩 : 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여
    ex) ‘가’는 1, ‘나’는 2, ‘다’는 3
    * 조합형 인코딩 : 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비트열을 할당하여 조합으로 하나의 글자 코드를 완성
    ex) ‘ㄱ’는 1, ‘ㄴ’는 2, ‘ㄷ’는 3
  • EUC-KR는 대표적인 완성형 인코딩 방식
  • 결합된 한글 단어에 2바이트 크기의 코드를 부여
  • 총 2,350개 정도의 한글 단어를 표현할 수 있으나 모든 한글 조합을 표현할 수 있을 정도로 많은 양은 아님
  • 조금 더 다양한 문자를 표현하기 위해 CP949(Code Page 949)가 등장했으나, 이마저도 한글 전체를 표현하기에 넉넉한 양은 아님

 

 

★ 유니코드와 UTF-8

  • 유니코드 : 여러 나라의 문자를 광범위하게 표현할 수 있는 통일된 문자 집합
  • EUC-KR처럼 각 문자마다 고유한 값이 부여됨
  • 아스키 코드나 EUC-KR은 글자에 부여된 값 그대로 인코딩 값으로 삼았으나 유니코드는 다양한 방법으로 인코딩 함
  • UTF-8, UTF-16, UTF-32 등이 다양한 인코딩 방법
  • UTF-8 인코딩 방식
    * 1
    바이트부터 4바이트까지의 인코딩 결과를 만들어냄( 바이트가 될지는 문자에 부여된 값의 범위에 따라 결정)
    *
    각각의 글자에 부여된 값으로 바이트가 될지 있고, 각각의 고유한 값이 인코딩 결과에 들어감
728x90

'CS' 카테고리의 다른 글

[컴퓨터 네트워킹 하향식접근] 1장 과제와 질문  (5) 2024.09.22
REST API  (0) 2023.08.03
프로세스 동기화  (0) 2023.06.14
컴퓨터 시스템의 구조  (0) 2023.06.07
운영체제  (0) 2023.06.03