📋 고정 소수점 방식
소수점을 사용하여 고정된 자리수의 소수를 나타내는 방법이다.
📍 고정 소수점 방식의 특징
➡️ 정수와 소수의 위치를 미리 정해놓고 표현한다.
➡️ 16비트의 고정 소수점 방식에서 소수점 위치를 8비트 앞으로 고정한다면, 가장 왼쪽 8비트는 정수 부분이고, 나머지 8비트는 소수 부분이다.
➡️ 연산 장치에 따라서 부동소수점을 지원하지 않는 경우에는 고정 소수점 방식으로 소수점을 표현하여아 한다.
➡️정수형 자료형의 연산은 부동소수점 자료형의 연산보다 빠르게 할 수 있다는 장점이 있다.
➡️ 고정 소수점 방식은 연산 절차 상 덧셈과 뺄셈이 더 간편하다.
➡️ 고정된 소수 표현을 사용하므로 정확한 계산이 가능하며, 소수 연산의 오버헤드가 적다. 아래와 같은 경우 이 장점이 성립한다.
→ 정밀도 요구 사항이 명확하고, 제한된 범위 내에서 작업하는 경우
ex) 금융 애플리케이션에서 통화 계산이나 금액 처리와 같이 정확한(딱 떨어지는) 소수 계산이 필요한 경우
→ 소수 부분의 자릿수가 고정되어 있고, 작은 오차를 허용하는 경우
→ 소수 연산의 오버헤드를 최소화해야 하는 경우
➡️ 그러나 작은 차이를 나타내야 하는 경우 더 많은 비트를 소수 부분에 할당해야 하고, 숫자를 표현하는 데 필요한 비트 수가 증가하게 되어 메모리 사용량이 증가하고 연산에 소요되는 비용이 증가할 수 있다.
➡️ 작은 크기의 수를 표현하기 위해 오히려 낭비되는 공간이 많아지는 경우도 생긴다.
📍 고정 소수점 방식 예시 (32bit)
32bit의 고정 소수점으로 나타내는 예시를 보자.
이 경우 맨 처음 1bit는 부호 비트, 그 다음은 15bit의 정수부, 마지막은 16bit의 소수부로 이루어진다.
10진수로 5.625인 수를 고정 소수점 방식으로 표현해 보자.
1️⃣ 5.625는 양수이므로 맨 처음에 위치한 부호 비트는 0이 된다.
주어진 수가 양수일 경우 맨 처음에 위치한 부호 비트는 0이 되고, 음수일 경우 1이 된다.
2️⃣ 5.625를 2진수로 나타내면 101.101이 된다. 따라서 정수부와 소수부에 모두 101이 들어가게 된다. 수를 채울 때는 정수부는 오른쪽부터, 소수부는 왼쪽부터 채운다.
3️⃣ 결과적으로 5.625를 고정 소수점 방식으로 컴퓨터 메모리에 표현하면 다음과 같이 된다.
고정 소수점 방식에서는 허용되는 bit만큼만 수를 채울 수 있으므로 수가 표현 범위를 넘으면 메모리에 적재하는 것이 불가하다. 그리고 정수부가 더욱 큰 수가 있고, 소수부가 더욱 큰 수가 있으므로 어느 한쪽의 공간이 낭비되는 경우도 발생할 수 있다.
📌 고정 소수점 방식 참고 사이트
고정소수점 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
고정소수점 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. -->
ko.wikipedia.org
☕ 실수 표현(부동 소수점) 원리 한눈에 이해하기 (tistory.com)
☕ 실수 표현(부동 소수점) 원리 한눈에 이해하기
실수의 2진수 표현 10진수의 정수를 2진수의 정수로 변환할 수 있듯이, 10진수의 소수를 2진수의 소수로 변환할 수 있다. 예를들어 10진수 11.765625 를 2진수 소수로 변환하는 방법은 다음과 같다. 먼
inpa.tistory.com
& Chat GPT
📋 부동 소수점 방식
위 고정소수점 방식의 단점을 보완하는 방식이다.
실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 방식이다.
📍 부동 소수점 방식의 특징
➡️ 고정 소수점 방식보다 공간 낭비를 줄이며 넓은 범위의 수를 나타낼 수 있어 과학기술 계산에 많이 이용한다.
➡️ 숫자를 가수와 지수의 조합으로 표현하며, 일반적으로 IEEE754 방식을 따른다.
➡️ but 정확한 소수 표현을 보장하지 않고, 소수를 근사값으로 저장할 수 있으며 오차가 발생할 수 있다.
📍 부동소수점 방식 예시 (32bit)
부호부 (1bit) : 양수일 때는 0, 음수일 때는 1
지수부 (부호가 없는 정수, 8bit) : 8bit로 표시
정규화된 가수부 (부호가 없는 정수, 23bit) : 제일 앞의 비트는 정규화되었으므로 1이다.
-118.625 (10진법 수)을 IEEE 754 (32비트 단정밀도)로 표현해 보자.
1️⃣ 음수이므로, 부호부는 1이다. (양수일 경우 부호부 0)
2️⃣ 절댓값(118.625)을 이진법으로 나타내면 1110110.101이 된다.
3️⃣ 소수점을 왼쪽으로 이동시켜 왼쪽에는 1만 남게 만든다. (1110110.101 = 1.110110101 x 2^6, 정규화된 부동소수점 수)
4️⃣ 가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다. 따라서 가수부는 11011010100000000000000이 된다.
5️⃣ 지수는 6 (위에서 2의 6승)이므로, Bias(바이어스)를 더해야 한다. IEEE 754 형식에서는 Bias는 127이므로 6 + 127 = 133이 된다. 이를 이진법으로 변환하면 10000101이 되고, 이것이 곧 지수부가 된다.
📌 부동 소수점 방식 참고 사이트
부동소수점 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
부동소수점 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 초기의 전기기계식 프로그래밍 가능한 컴퓨터 Z3에는 부동소수점 산술 기능이 포함되었다. (뮌헨의 국립 독일 박물관) 부동소수점(浮動小數點, floating point) 또
ko.wikipedia.org
& Chat GPT
'Javascript study' 카테고리의 다른 글
[Javascript] alert, prompt, confirm을 이용한 상호작용 (0) | 2023.07.04 |
---|---|
[Javascript] 자료형 (0) | 2023.07.04 |
[Javascript] 변수와 상수 (0) | 2023.07.03 |
[Javascript] 엄격 모드 (0) | 2023.07.01 |
[Javascript] 코드 구조 (0) | 2023.06.30 |
댓글