CS 🦾

고정 소수점

침착하고 가야할 곳에만 집중하는 달팽이 2026. 2. 4. 21:34

이제 필기 좀 그만 떨어지고자... CS 필기를 전산직 문제집으로 공부하고자 한다...

하루에 한 챕터씩 정리해서 올린다!!! 진짜다!!! 이제 진짜 지ㅣㄴ짜 올린다. 이제 안 사라질거다.

....

< 고정 소수점 >

근데 문제집에 고정 소수점이라고 적혀 있는데 그냥 내용은 그냥 정수 표현이다..! 실수는 안 다룬다.

1. 10진 연산 - 10진 연산을 표현하는 2가지 방법!

1) 팩 형식 Pack, unzone

10진수의 숫자를 한 자리씩 4비트 (bit) 로 표현하는 방법이다.

84
↓
8   4
↓   ↓
1000 0100

한 바이트: 10000100

-> 메모리 아끼고 좋지만 계산할 때 시간이 오래 걸린다.
연산할 때 한 바이트를 반으로 쪼개서 8과 4를 만들어서 계산을 해야 하잖슴...

2) 언팩 형식 Unpacked, Zone

10진수의 숫자를 한 자리씩 1바이트 (byte) 로 표현하는 방법이다.

84
↓
8           4
↓           ↓
0000 1000   0000 0100
→ 2바이트 필요

-> 메모리 낭비가 좀 있지만 연산이 편하다! 각 숫자를 독립적으로 처리 가능하다.

1. 2진 연산 - 2진 연산을 표현하는 3가지 방법!

1) 부호화 크기

  • MBS 라고 제일 중요한 비트 하나를 두고 걔가 0이면 양수 1이면 음수로 생각함.
  • 5 = 0101
    -5 = 1101 (맨 앞 비트만 1로)

2) 1의 보수

  • 음수를 표현할 때 0과 1을 모두 반대로 바꾼다.
  • 윤환 올림수 발생하면 처리해줘야 함. (최상위 숫자 위치에서 1이 벗어나면 맨 뒤 최하위 숫자 위치로 보내는 것)
  • 5 = 0101
    -5 = 1010 (모든 비트 반전)

3) 2의 보수

  • 음수 표현할 때 1의 보수에다가 1을 더함

    5 = 0101
    
    1단계: 1의 보수
    0101 → 1010
    
    2단계: +1
    1010 + 1 = 1011
    
    -5 = 1011

-> 얘를 가장 많이 씀. : 연산이 빠름. 윤환 올림수 안 함. 0 이 하나밖에 없음. (부호화 크기와 1의 보수는 -0, +0 이 따로 있음)

음수 표현 방식 비교 (n비트 기준)

방식 0 표현 0 개수 표현 범위
부호화 크기 00...00, 10...00 2개 -(2n-1-1) ~ +(2n-1-1)
1의 보수 00...00, 11...11 2개 -(2n-1-1) ~ +(2n-1-1)
2의 보수 00...00 1개 -2n-1 ~ +(2n-1-1)