본문 바로가기

백엔드/os 및 일반 지식

컴퓨터 자료 구조 - 실수를 표현하는 방법, 2진 코드화한 10진수 시스템

반응형

**출발 생각

10진법은 실수를 표현할 때 소수점을 사용한다.

2진법도 필요하지않을까??

라는 생각에서 출발 

 

 

 

 

 

**고정소수점 표현볍 : Fixed Point

- 주어진 비트 범위 내에서 소수점의 위치를 임의로 정하는 방법

예) 이진법.    십진법.

     00.01       1/4    

     00.11        3/4

- 소수점 기준 왼쪽과 오른쪽으로 나누어서 이진법으로 표현한다고 생각하자.

- 쓸모있는 범위의 실숫값을 표현하기 위해 필요한 비트 개수가 너무 많아, 범용 컴퓨터에서 이런 방식은 잘 안 쓴다고 한다.

 

 

**부동소수점 표현법

- 고정 소수점의 문제점을 보완하기 위해, 2진수에 과학적인 표기법을 적용해서 나온 것이 부동 소수점이다.

- 10진 소수점 왼쪽이 한 자리뿐인 소수에 10을 몇 번 거듭제곱한 값을 곱하는 방식으로 소수를 표현한다.

예)

0.0012 >>>1.2 * 10^-3

0.12 >>> 1.2 * 10^-1

2진법의 경우 가수(소수점 왼쪽이 한 자리인 부분)는 2진 소수, 지수 부분은 2의 거듭횟수일 뿐 다르지 않다.

- 비트 조합 중에 낭비되는 부분이 많다.

- 비트 패턴이 가능한 모든 수를 표현하지는 못한다.

 

 

 

 

**IEEE 부동소수점 수 표준

- 컴퓨터에서 계산 수행 시, 실수를 표현하는 방법은 부동 소수점인데, 관련 기능을 정의한 것이 IEEE 754 표준이다.

- 부동소수점의 단점을 보완하기 위해 여러가지 트릭을 사용하여 컴퓨터에서 연산하는데, 정규화와 디지털 이큅먼트 등이 있다.

- 자주 쓰이는 부동 소수점 수 : 기본 정밀도 부동 소수점 수, 2배 정밀도 부동 소수점 수

1. 기본 정밀도는 32비트 사용, 7비트 정밀도로 대략 10 +- 38제곱 정도의 범위를 표현할 수 있다.

2. 2배 정밀도는 64비트를 사용, 약 10 += 38제곱 범위의 수를 15비트 정밀도로 표현 가능

출처 : https://ko.wikipedia.org/wiki/부동소수점

 

 

 

**이진코드화한 10진수 시스템 (Binary Coded Decimal)

- 4비트를 사용해 10진 숫자를 표현

예)

12를 2진수로 표현시,

기존은 1100인데, BCD로 표현하면 0001 0010이다.

 

- 비트를 너무 많이 사용한다는 단점이 존재

 

 

 

 

**참고

https://codetorial.net/articles/floating_point.html

 

숫자를 부동소수점 방식으로 표현하기 - Codetorial

부호, 지수, 가수 IEEE 754 부동소수점 표현에서 숫자는 아래와 같이 부호부, 지수부, 가수부의 세 부분으로 구성됩니다. 각 부분의 역할과 사용하는 비트 수는 아래와 같습니다. 부호부 (Sign) : 1비

codetorial.net

 

반응형