본문 바로가기
이론/컴퓨터구조

실수, 비수치 데이터

by ohojee 2023. 12. 24.

실수

개요

  • 과학적 표기법
    • 부호, 가수부와 지수부로 표현하는 방법(기수는 하나로 정해져있기에 적을 필요 x)
    • 기수: 2진수 기반인지 10진수 기반인지
    • 부동 소수점(floating-point) 수 표기법
    • 부호(sign), 가수(mantissa), 기수(base), 지수(exponent)
    • 대부분의 아키텍처는 기수를 2로 사용
  • 부동 소수점 수의 일반적 형식

정규화

  • 과학적 표기법은 다양하게 표현 가능 ⇒ 정규화 필요
  • 정규화: 가수의 소수점 왼쪽에 0이 아닌 한자리 유효 숫자만 두도록 하는 것
  • 2진수는 항상 가수의 소수점 왼쪽은 1(예외는 가수가 0인 경우)
    ⇒ 잠복비트 사용

잠복비트

  • = 가수 필드에 없지만 사용할 수 있는 1개의 유효 비트
  • 소수점 왼쪽에 1이 숨어있는거라고 가정
  • 0인 경우는 예외이기 때문에 표현하기 위한 예외 조항 필요

IEEE-754

  • 미국 IEEE(전기전자공학회)에서 정한 부동 소수점 형식에 대한 표준안
    • 이중 정밀도(double-precision): 64bit, C언어의 double
    • 단일 정밀도(single-precision): 32bit, C언어의 float
      • 32bit안에 부호, 가수, 지수를 표현해야 함
      • 부호(sign) 비트 s: 1bit 크기, 0이면 양수, 1이면 음수
      • 지수(exponent) 필드 E: 8bit 크기, 127-초과수, 기수는 2진수
        • 8bit라 28/22^8/2 = 127.x ⇒ 127 초과수 사용
      • 가수(mantissa) 필드 M: 23bit + 1bit 잠복비트, 2진수
        • 소숫점 뒤라 만약 .0011이면 0011(0000000000~)저장
      • VV =(1)𝑠×(1.𝑀)×2𝐸127 (−1)^𝑠 ×(1.𝑀)×2^{𝐸−127}

ex

범위와 정밀도

  • 수치 데이터 형식은 영역(domain)과 연산(operator)의 두 가지 속성을 가짐
  • 영역은 범위(range)와 정밀도(precision)의 두 가지 특징을 가짐
    • 범위: 데이터를 표현할 수 있는 최댓값과 최솟값
    • 정밀도: 2개의 연속적인 데이터 값 사이의 거리 ?
  • 정수는 범위 속성만 존재, cuz 두 숫자 사이의 거리가 1로 고정되어있기 때문
  • 부동 소수점 수는 범위와 정밀도라는 두 가지 특징이 모두 있음
    • 범위는 지수의 크기에 영향을 받고, 정밀도는 가수의 길이에 좌우됨
      • 지수가 클 수록 더 넓은 범위를 표현할 수 있기 때문
      • 쓸 수 있는 소숫점 길이가 많을 수록 정밀도 ⬆️
    • 범위와 정밀도는 트레이드 오프 관계
      ⇒ cuz 한정된 비트를 지수와 가수가 나눠 쓰기 때문
    • 지수 필드 비트 ⬆️, 표현 범위가 넓어지지만 정밀도 ⬇️
    • 가수 필드 비트 ⬆️, 정밀도가 높아지지만 표현 범위 ⬇️
  • 단일 정밀도 방식의 정규화 부동소수점 수의 표현 범위
    • 정규화로 지수는 -126~127이기에 양수 최대값은 2^127 ?
    • 양수 최대값: 1.11111×2127=(2223)×21271.111⋯11 × 2^{127} = (2−2^{−23}) ×2^{127}
    • 양수 최소값: 1.00000×2126=1×21261.000⋯00 × 2^{−126} = 1 × 2^{−126}
    • 음수 최대값:1.11111×2127=(2223)×2127 −1.111⋯11×2^{127} = −(2−2^{−23}) ×2^{127}
    • 음수 최소값: −1.000⋯00×2−126 = −1×2−126
    • 1.11111…1 + 0.000…1 = 10.000…0 = 2
      ⇒ 1.11111…1 = 2 - 0.000…1
      ⇒ 2−2^{−23}
  • 단일 정밀도 방식의 양수 최대값 부근의 정밀도(최댓값과 그보다 하나 작은 수)
    • 양수최대값 a=1.111⋯11×2127 = 2−2−23 ×2127
    • 양수 최대값에 인접한 수:

      b=1.11110×2127=(2223223)×2127b = 1.111⋯10 × 2^{127} = (2−2^{−23}−2^{−23}) ×2^{127}
    • a−b=0.000⋯01×2127 =2−23×2127 =2104
  • 단일 정밀도 방식의 양수 최소값 부근의 정밀도(최소값과 그보다 하나 작은 수)
    • 양수최소값 c=1.000⋯00×2−126=1×2−126
    • 양수최소값에인접한수 d=1.000⋯01×2−126 =(1+2−23)×2−126
    • d−c=0.000⋯01×2−126 =2−23×2−126 =2−149

오버플로우 언더플로우

비수치 데이터

ASCII 코드

  • 미국국립표준연구소(ANSI)가 제정한 알파벳을 사용하는 대표적인 문자 코드
  • 소형 컴퓨터를 중심으로 보급되어 국제적으로 널리 사용

유니코드(Unicode)

  • 공식 명칭: ISO/IEC 10646-1(Universal Multiple-Octet Coded Character Set)
  • 다국적 문자를 모두 포함하기 위한 16비트 코드 체계
  • 전세계에서 사용하고 있는 26개 언어의 문자와 특수기호 지원
    • 코드할당비율: 한자 약40%, 한글 약17%, 아스키 및 기호 문자 약10%
    • 한글의 경우 자모 조합이 가능한 완성형 한글 11,172자가 모두 포함
  • 인코딩 방식
    • 유니코드를 저장하는 인코딩 방식은 UTF-8, UTF-16, UTF-32 등 다양한 종류가 있음
    • UTF-8이 가장 표준적으로 사용하는 방법

Uploaded by N2T

'이론 > 컴퓨터구조' 카테고리의 다른 글

정수, 부동소수점 연산  (1) 2024.01.06
연산장치 개요  (1) 2024.01.02
데이터 형식, 정수  (1) 2023.12.06
복잡도에 따른 명령어 집합  (1) 2023.12.04
주소 지정 방식  (1) 2023.11.30

댓글