뻐킹 때려쳐
새로 2.3 ~ 2.4 요약했다
그러니 이딴 구데기 요약본을 때려치고 새거 보자
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
신규 업데이트
signed와 unsigned 모두 2의 보수 형식을 사용하므로 동일한 회로로 처리 가능.
carry-out과 overflow 조건은 다르게 해석됨:
unsigned: carry-out이 1이면 overflow
signed: 부호가 변하면 overflow
overflow 발생 시, 결과를 저장할 수 없고 modular 연산처럼 wrap-around.
하드웨어는 보통 w
비트 결과만 저장.
unsigned x unsigned = unsigned
, signed x signed = signed
등 C에서는 자동 변환 규칙 존재.
나눗셈도 반올림 방식이 중요: C는 0쪽으로의 truncation을 사용.
IEEE 754 표준 사용
Single precision (float): 32비트
Double precision (double): 64비트
형식:
(-1)^s × M × 2^E
s
: 부호 비트
M
: 가수(significand, 정규화된 경우 1.xxxx 형식)
E
: 지수(exponent) bias 방식
정규화된 수 (Normalized): 가수는 1 ≤ M < 2, 지수는 bias 적용
비정규화 수 (Denormalized): M은 0 ≤ M < 1, 지수가 가장 작은 값보다 작을 때 사용 → underflow 방지
특수 값들: +∞
, -∞
, NaN
등 특수 표현 존재
정확히 표현할 수 없는 경우, 반올림이 필요.
기본은 round-to-even 방식
a + b != b + a
일 수 있음 (부동소수점 덧셈의 비가환성)
(a + b) + c != a + (b + c)
일 수 있음 (덧셈의 비결합성)
계산 순서와 정밀도가 중요