수치해석 기초¶
1. 진법 변환¶
진법 체계¶
| 진법 | 기수 | 사용 숫자 | 접두사 |
|---|---|---|---|
| 2진수 (Binary) | 2 | 0, 1 | 0b |
| 8진수 (Octal) | 8 | 0~7 | 0o |
| 10진수 (Decimal) | 10 | 0~9 | - |
| 16진수 (Hexadecimal) | 16 | 0~9, A~F | 0x |
10진수 → 2진수¶
나머지를 아래에서 위로 읽습니다.
2진수 → 10진수¶
각 자리에 2의 거듭제곱을 곱해 합산합니다.
2진수 ↔ 16진수 (4비트씩 묶음)¶
16진수 변환표¶
| 10진수 | 2진수 | 16진수 |
|---|---|---|
| 0 | 0000 | 0 |
| 1 | 0001 | 1 |
| 8 | 1000 | 8 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 11 | 1011 | B |
| 12 | 1100 | C |
| 13 | 1101 | D |
| 14 | 1110 | E |
| 15 | 1111 | F |
2. 정수 표현¶
부호 없는 정수 (Unsigned)¶
n비트로 0 ~ 2ⁿ - 1 표현
2의 보수 (Two's Complement)¶
부호 있는 정수 표현의 표준 방식입니다.
범위¶
3. 부동소수점 (Floating Point)¶
IEEE 754 표준으로 실수를 표현합니다.
구조 (32비트 단정도)¶
| 구성 | 비트 수 | 설명 |
|---|---|---|
| 부호(Sign) | 1 | 0=양수, 1=음수 |
| 지수(Exponent) | 8 (단정도) / 11 (배정도) | 바이어스 127 더함 |
| 가수(Mantissa) | 23 (단정도) / 52 (배정도) | 1.xxx 형태의 소수 부분 |
부동소수점 표현 방법¶
13.625 를 IEEE 754로 표현
1. 2진수 변환: 13 = 1101, 0.625 = 0.101 → 1101.101
2. 정규화: 1.101101 × 2³
3. 부호: 0 (양수)
4. 지수: 3 + 127 = 130 = 10000010
5. 가수: 10110100000000000000000 (소수점 이후 23비트)
결과: 0 10000010 10110100000000000000000
부동소수점 오차¶
- 2진수로 정확히 표현 못하는 소수 존재
- 엡실론(ε) 비교: 두 값의 차이가 매우 작은 값보다 작으면 같다고 판단
4. 비트 연산¶
| 연산 | 기호 | 설명 |
|---|---|---|
| AND | & | 둘 다 1이면 1 |
| OR | | | 하나라도 1이면 1 |
| XOR | ^ | 다르면 1 |
| NOT | ~ | 비트 반전 |
| 왼쪽 시프트 | << | 비트를 왼쪽으로 이동 (×2) |
| 오른쪽 시프트 | >> | 비트를 오른쪽으로 이동 (÷2) |
시험 포인트¶
- 10진수 → 2진수: 2로 나눈 나머지를 역순으로
- 2진수 → 16진수: 4비트씩 묶어 변환
- 2의 보수: 비트 반전 후 +1 → 음수 표현
- 8비트 2의 보수 범위: -128 ~ 127
- IEEE 754: 부호(1) + 지수(8) + 가수(23) = 32비트
- 부동소수점 오차: 0.1+0.2 ≠ 0.3 (이진 표현의 한계)
- 시프트 연산: << n은 ×2ⁿ, >> n은 ÷2ⁿ