3장 컴퓨터 연산
정수
실수 #
곱셈 / 나눗셈
덧셈 / 뺄셈
뺄셈 = 역 덧셈
곱셈 = 반복적 덧셈
나눗셈 = 반복적 뺄셈 = 반복적 역 덧셈
부동소수점
부호비트
지수
가수
오버플로우 / 언더플로우
고정된 길이에서 파생된 문제
sometimes minor
발생할 수 없는 상황
무시해도 되는 상황
다른 부호의 덧셈(동일한 부호의 뺄셈)
주소연산(unsigned)
major problem
catcher
부호 확인(양수를 더했는 데 음수)
XOR
확장
Question. 부동소수점이 2배 정밀도로 확장할 때(32비트에서 64비트) 지수부분은 3bit 늘어나는 반면에 가수부분은 무려 23비트에서 52비트로 늘어난다. 왜 지수부분에 비해서 가수 부분이 지나치게 늘어나는 것인가.
Thinking. 지수의 범위가 넓을 필요가 있는지 일단 의문이 든다. 과학의 분야를 예로 들어서 생각해본다. 천문학은 굉장히 큰 수를 다룬다. 광년이라는 새로운 단위를 만들기도 한다. 반면 양자 역학을 비롯하여서 미시세계를 다룰 때는 굉장히 작은 수를 다룬다. 중요한 것은 천문학자이면서 동시에 양자역학을 공부하지 않는다는 것이다. 숫자의 표현 범위가 중요하기 보다는 오히려 제한된 범위 내에서 정밀도가 높은 것이 중요하다. 이러한 관점에서 지수보다 가수의 확대를 통해 정밀도를 높이는 것이 중요하다고 판단된다.
성능 개선
병렬성
예측
파이프라이닝
연산의 아이디어는 유사
자릿수 맞추는 과정
IEEE 754
NaN 표기
무한대 표기
정규화
바이어스
Question. 주소 연산에 있어서 오버플로우가 정말로 큰 영향을 끼치지 않는가?
Thinking. 완전히 무시할 수는 없을 것 같다. 일단 연산의 결과로 나온 주소에 중요한 데이터가 있다면 오버플로우를 인지하지 못하고 메모리를 사용했을 경우 데이터 손실이 일어나게 된다.
Question. 무한소수는 어떻게 처리할 것인가.
Thinking. 10진수 실수를 2진수로 변환하는 과정에서 무한소수가 발생하기 쉽다. 왜냐하면 2의 음수 거듭제곱의 합을 통해 십진수 소수와 정확히 일치되도록 표현하기 어렵기 때문이다. 따라서 가수부분이 무한정 늘어날 것이다. 정밀도가 중요하지 않은 상황이라면 적당한 수준에서 반올림을 해서 연산을 하면 빠른 결과를 낼 수 있지 않을까. 애초에 정확한 값으로 표현하기 어렵다면 속도를 빠르게 하는 것이 좋을 듯 하다.
2014118019 송대훈
3장 정리과제