Algorithm

n진수와 실수

5_ssssseung 2021. 4. 15. 18:11

n진수

2진수, 8진수, 10진수, 16진수

 

10진수를 n진수로 변환

  • 원하는 타진법의 수로 나눈 뒤 나머지를 거꾸로 읽는다.
  • 예시
    • (149)_10 = (10010101)_2= (95)16
    • = (225)_8

n진수를 10진수로 변환

  • (135)_8 = 1 * 8^2 + 3 * 8^1 + 5 * 8^0 = (93)_10
  • 소수점이 있을 때
    • (135.12)_8 = 1 * 8^2 + 3 * 8^1 + 5 * 8^0 + 1 * 8^(-1) + 2 * 8^(-2) = (93.15625)_10

 

n진수간 변환

 

음의 정수 표현

  • 1의 보수
    • 부호와 절대값으로 표현된 값을 부호 비트를 제외한 나머지비트들을 0은 1로, 1은 0으로 변환한다.
      • -6 = 1000000000000110 : 부호와 절대값 표현
      • -6 = 1111111111111001 : 1의 보수 표현

 

  • 2의 보수
    • 1의 보수방법으로 표현된 값의 최하위 비트에 1을 더한다.
      • -6 = 1111111111111010 : 2의 보수 표현
    • 1의 보수방법으로 표현할 때 0 값에 대해 -0이 생기기 때문에 2의 보수 표현을 주로 사용

 

실수

 

실수의 표현

  • 소수점 이하 4자리를 10진수로 표현

 

  • 2진 실수를 10진수로 변환하는 방법
    • 예 1001.0011

 

  • 컴퓨터는 실수를 표현하기 위해 부동 소수점(floating-point) 표기법을 사용
  • 부동 소수점 표기 방법은 소수점의 위치를 고정시켜 표현하는 방식
    • 1001.0011 = 1.001001 * 2^3

 

실수를 저장하기 위한 형식

  • 단정도 실수 (32비트)

  • 배정도 실수 (64비트)

 

  • 가수부 : 실수의 유효 자릿수들을 부호화된 고정 소수점으로 표현한 것
  • 지수부 : 실제 소수점의 위치를 지수 승으로 표현한 것

 

  • 단정도 실수의 가수 부분을 만드는 방법
    • 예 1001.0011
      • 정수부의 첫 번째 자리가 1이 되도록 오른쪽으로 시프트
      • 소수점 이하를 23비트로 만든다.
      • 소수점 이하만을 가수 부분에 저장
      • 지수 부분은 시프트 한 자릿수 만큼 증가 또는 감소

 

  • 단정도 실수의 지수부분을 반드는 방법
    • 지수부에는 8비트가 배정
    • 숫자로는 0-255까지 표현 가능하지만, 음수 값을 나타낼 수 있어야 하므로 익세스(excess) 표현법 사용
      • 익세스 표현법 : 지수부의 값을 반으로 나누어 그 값을 0으로 간주하여 음수지수와 양수지수를 표현하는 방법

 

  • 단정도 표현에서의 지수부 익세스 표현

  • 1001.0011을 단정도 실수로 표현하면 다음과 같다.

 

  • 컴퓨터는 실수를 근사적으로 표현한다.
    • 이진법으로 표현 할 수 없는 형태의 실수는 정확한 값이 아니라 근사 값으로 저장되는데 이때 생기는 작은 오차가 계산 과정에서 다른 결과를 가져온다.
  • 실수 자료형의 유효 자릿수
    • 32 비트 실수형 유효자릿수(10진수) : 6
    • 64 비트 실수형 유효자릿수(10진수) : 15
  • 파이썬에서는 내부적으로 더 많은 비트를 사용해서 훨씬 넓은 범위의 실수 표현 가능

'Algorithm' 카테고리의 다른 글

Quick Sort (퀵 정렬)  (0) 2021.04.19
Merge Sort (병합 정렬)  (0) 2021.04.19
비트 연산  (0) 2021.04.15
시간 복잡도 개념 및 설명  (0) 2021.04.13
Tree / Binary Tree / Heap (트리, 이진 트리, 힙)  (0) 2021.04.07