본문 바로가기
운영체제

[컴퓨터 구조] 2진수, 16진수, 인코딩

by 송파감자 2024. 7. 31.

1. 0과 1로 숫자 표현하기


1.1. 정보 단위

  • 0과 1을 나타내는 가장 작은 정보 단위 == bit
  • 1 byte == 8bit
  • 1 kB == 1,000 byte == 1,024 byte
  • 1MB = =1,000 kB
  • 1GB == 1,000 MB
  • 1TB == 1,000 GB

1.2. 이진법

  • 이진법(binary)
    • 0, 1로 숫자를 표현하는 방법
  • 십진법 (decimal)
    • 0 ~ 9 로 표현

1.3. 이진수의 음수 표현

  • 2의 보수 (two’s complement)를 구함
  • 보수가 뭐냐?
    • 어떤 수를 그 보다 큰 2n승에서 뺀 값
    • 좀 더 쉽게 말하자면 모든 0과 1 뒤집고, 거기에 1 더하면 됨!
  • ex) 11 (2) 의 음수는 ?
    • 00으로 바꿔주고, 1 더하면 → 01 (2)
  • 컴 내부에서 는 양수, 음수 구분 위해 플래그(flag) 사용
    • flag는 부가 정보임

1.4. 십육진법

  • 이진법으로 표현하면 숫자 길이가 너무 길어짐
  • 십육진법 (hexadecimal)
    • 0 ~ 9 , A ~ F로 표현
    • 즉, A가 10, F가 15
  • 표기는
    • 수학적으로는 15(16)
    • 코드상으로는 0x15
  • 왜 쓰냐?
    • 이진수로 변환 쉬우니까

1.5. 십육진수를 이진수로 변환

  • 십육진수를 이루는 숫자 하나를 이진수로 표현하려면?
    • 4비트 필요함
    • 2의 4제곱 == 16
  • ex) D5(16)
    • D는 십진수 13임
    • 5는 5겠쥬?
    • 4자리씩 2진수로 바꿔주면
    • D는 1101(2)
    • 5는 0101(2)
    • 즉 → 1101 0101 (2)
  • 나는 16진수를 10진수로 먼저 생각하고 그 10진수를 2진수로 바꿔준다!

2. 0과 1을 문자로 표현하기


2.1. 문자 집합과 인코딩

문자 집합

  • 컴이 인식하고 표현할 수 있는 문자의 모음

인코딩

  • 컴이 문자집합 속에 있는 문자를 그대로 이해하는 것은 아님
  • 그 문자를 0,1로 변환해야 이해 가능
  • 이 변환 과정을 문자 인코딩(character encoding)
  • 인코딩 후 0,1로 이뤄진 결과 값이 문자 코드가 됨

디코딩

  • 인코딩의 반대과정
  • 사림이 이해할 수 있게 문자로 변화하는 과정임

2.2. 아스키코드

  • American Standard Code for Infomation Interchange
  • ASCII
  • 갯수는 2의 7 제곱 (총 128개)
  • 0~127
  • A는 십진수 65
  • a는 십진수 97 외우자~

2.3. EUC-KR

  • 대표적인 완성형 인코딩 방식임
  • 한글 단어에 2바이트 크기 부여함
  • 근디 한글 인코딩은 두 가지 방식 있음
    • 완성형 인코딩
    • 조합형 인코딩
  • 하지만 모든 한글을 다 표현 X ex) 쀍..

2.4. 유니코드와 UTF-8

  • 여러 나라의 문자를 광범위하게 표현할 수 있는 통일된 문자 집합
  • UTF?
    • Unicode Transformation Format
  • UTF-8로 인코딩하면 한글은 3바이트로 표현됨
  • 아래 이미지는 라이더에서 한글 주석 쓰면 나오는 메시지. 한글 주석 때문에 인코딩 어떻게 다시 할거냐고 ..매번 물었는데, 신경 안 썼던 나 ^^...

라이더에서 한글 주석 쓰고 솔루션 파일 다시 켜면 나오는 메시지
내 비서의 답변 ^^..



2년 전 정혜경 쌤 C언어 수업 들을 때 한참 어려웠던 기본 데이터 개념 ^^..

공부를 누적할 수록 익숙해져서일까? 무슨 말인지 쏙쏙 이해된다, 이제는!