리나 Dev토리

CODE. Ch 23. 고정소수점과 부동소수점 본문

CS

CODE. Ch 23. 고정소수점과 부동소수점

리나lina 2022. 4. 7. 10:43

CODE 책

Chapter 23. 고정소수점과 부동소수점

 

 

비트수                                         2의 보수의 범위 / 양수의 범위

출처: https://dojang.io/mod/page/view.php?id=30

 

 

2의 보수법

2의 보수법은 해당 양수의 모든 비트를 반전한 1의 보수에 1을 더하여 음수를 표현하는 방법

http://www.tcpschool.com/c/c_refer_negativeNumber

현재 대부분의 시스템에서는 모두 2의 보수법으로 음수를 표현하고 있습니다.

 

 

수의 분류

자연수 1, 2, 3에

    +를 붙인 수   ⇒   +1, +2, +3   “양의 정수”

    - 를 붙인 수   ⇒    -1,  -2, -3,   “음의 정수”

 

기준이 되는 0 + 양의 정수 + 음의 정수 = 정수

 

분수에 +를 붙인 수 ⇒ 양의 유리수 

 

분수에 - 를 붙인 수 ⇒ 음의 유리수

 

0 + 양의 유리수 + 음의 유리수 = 유리수

출처 : https://susuni11.tistory.com/10

 

42,705.684 를 각각 자리수로 나누면

소수점은 나누기 기호로 되고, 10의 거듭제곱수(맨 오른쪽)로 표현된다.

1/3 처럼 3이 끊임없이 반복되는 경우 ⇒ 3위에 윗줄을 그어 표시

 

소수

0.75 같이  75/100 이 10진수로 표현된 분수

 

무리수

분수로 나타낼 수 없는 소수

소수 + 무리수 = 실수

 

고정 소수점

32 Bit 경우, 양의 정수 저장한다면 0 ~ 4,294,967,295 까지의 정수 표현

https://sudo-minz.tistory.com/7

즉, 소수점의 위치를 고정시켜 표현하는 방식 ⇒ 크고 정밀한 실수를 표현하지 못함

높은 정밀도가 필요없는 소규모 시스템에서는 간혹 쓰임

 

4.5를 저장하려면? ⇒ BCD 부호 사용

BCD (Binary-coded decimal)은 이진수 네 자리를 묶어 십진수 한 자리로 사용하는 기수법이다.

https://jhnyang.tistory.com/232

-4,325,120.25  ⇒  5바이트로 표현  ⇒  16진수로 표현

맨 앞 1자리는 부호 비트(Sign Bit) : 0이면 양수, 1이면 음수

 

부동 소수점

실수는 보통 정수부와 소수부로 나누지만, 가수부와 지수부로 나누어 표현할 수도 있다.

부동 소수점 방식은 실수를 가수부와 지수부로 나누어 표현하는 방식

부동 소수점 방식은 매우 큰 실수까지도 표현할 수 있다.

가수부 : 4.9 (실질적인 데이터)

지수부 : 11 (소수점이 얼마나 이동할지)

 

10진수로 예를 들면

부동소수점 형식을 컴퓨터에서 사용할 경우

 

IEEE 부동 소수점 표준

전기 전자 기술자 협회, ‘I-Triple-E’라고 읽음

 

IEEE 754 방식에서는 몇 가지 예외사항을 처리한다.

  1. NaN
    • Not a Number라는 뜻이다. 즉, 나누기 0이나, 음수에 대한 제곱근과 같은 오류를 말한다.
  2. Overflow
    • 주어진 정밀도 형식으로 표현할 수 있는 수의 범위보다 더 큰 수. 즉 오버플로우를 의미한다.
  3. Underflow
    • 주어진 정밀도 형식으로 표현할 수 없을 정도로 작은 수에 해당한다. 즉, 언더플로우를 의미한다.
  4. Zero
    • 숫자 0을 의미하며, 모든 비트들을 0으로 채우면 된다.

 

출처 : 

https://jiminish.tistory.com/81

https://gsmesie692.tistory.com/94

https://jhnyang.tistory.com/232

https://sudo-minz.tistory.com/7

https://whatisthenext.tistory.com/146

https://www.slideshare.net/ukjinkwoun/ch23-17050068

 

Comments