비트와 바이트
- 컴퓨터는 2진법만을 사용해 정보를 저장한다(0과1)
- 전기 신호의 전압이 일정 기준보다 높으면 1 , 아니면 0으로 변환하여 사용한다.
비트(bit)
- 비트는 0과1을 표현하는 최소 단위이다.
- 여러개의 비트를 조합하여 데이터를 표현한다. ex)000,111....등
바이트(byte)
- 8비트가 합쳐져서 1바이트를 이룬다. 즉 8비트를 한 묶음으로 표현한 단위이다.
- 1바이트당 2^8 = 256가지의 데이터 표현이 가능하다
컴퓨터의 숫자표현 - 정수
컴퓨터가 정수를 다루는 방법
부호비트
- 컴퓨터는 n비트에서 가장 왼쪽의 비트를 부호 비트로 사용하여 음수를 표현한다.
ex) 4비트, 1011 => 맨 왼쪽, 즉 최상위 비트가 1임으로, 음수임을 확인 가능함
2의 보수
- 음수를 저장하기 위해 사용
- 모든 비트를 반전시키고 1을 더함
0011의 2의보수
0011=> 1100(반전)=>1101 (1더하기)
n개의 비트로 표현 가능한 정수 범위 : 2n-1 ~ 2n-1-1
컴퓨터의 숫자표현 - 실수
컴퓨터가 실수를 다루는 방법 - 부동소수점 방식으로 실수를 표현하고 저장함

부동소수점
32비트를 기준으로 가장 최상위 비트(가장 왼쪽)을 부호비트로 사용하고 , 나머지 31개 비트를 지수 필드와 가수 필드로 분리
- 지수필드(E) : 값의 범위를 나타내는 2의 거듭제곱 수를 저장
23~30번째 비트, 256 (28)개 표현이가능
- 가수(M)필드 : 정밀도를 나타내기 위해 실제 숫자의 유효한 자릿수를 저장함 (0또는 1만 옴)
233개의 표현이 가능하다.
### 8.3125
정수: 8 (1000)
2진수로 표현 = 8421 (1000)
소수 : 0.3125 (0101)
0.3125*2 = 0.625(0)
0.625*2=1.25 (1)
0.25*2=0.5 (0)
0.5*2= 1.0 (1) <==소수자리가 0이므로 종료
즉 1000.0101임.
이것을 부동소수점 방식으로 표현하면
소수점 왼쪽으로3번이동 => 1.0000101 *23
지수(E)부분: 3 (23이기 때문에 ,,)
이 3을 다시 2진수로 표현 00000011
이때, 지수는 음수 표현을 위해 127을 더함. 즉 00000011 + 01111111 = 10000010
왜 127을 더하냐면 부동 소수점에서 지수는 8비트임, 즉 0~256가지 표현 가능, 이 범위에서 각각 -128을 빼면
-128~127이 나옴. 그러면 지수가 어떤 값이든 양수로 저장할 수 있다.

cf) 1.0000101 *23
가수(M)부분은 0000101가 가수필드에 가장 왼쪽부터 입력된다.
부동소수점의 한계
실수는 2진수로 정확히 표현되기 어려워서 컴퓨터는 근사값으로 저장한다.
ex) 0.1을 2진수로 변환하면
정수 : 0
소수 : 000110......(무한 반복)
0.1*2 = 0.2
0.2*2 = 0.4
0.4*2 = 0.8
0.8*2 = 1.6
0.6*2 = 1.2
0.2*2 = 0.4
.
.
.
=> 유한한 비트로는 이를 완전히 표현이 불가능하기에 근사값으로 저장한다.
console.log(0.1+0.2) //각 근사값으로 저장
//0.30000000000000004
//근사값이 더해서 생기는 오차
//실제 내부 메모리에서는
// 0.1=>0.100000000000000000555**** (2진수를 10진수로)
//0.2=>0.2000000000000000001110****
cf) 이때 console.log(0.1) //0.1이 나오는 이유는 JS엔진이 근사값을 반올림해서 계산하기 때문이다.
한계점
- 실수 연산이 반복되면 오차가 합산되어 누적됨
- 누적된 오차는 특히 금융,과학 등에서 문제를 일으킴
해결안
1) Decimal (십진 임의정밀도 방식)
- 실수를 10진 가수와 10진 지수 형태로 저장
- 내부적으로 큰 정수값과 소수자릿수를 함께 보관
BigDecimal a= new BigDecimal("0.1") //문자열로
BigDecimal b= new BigDecimal("0.2")
BigDecimal C=a.add(b)
즉, 부동소수점과 같이 지수 가수를 그대로 한다. 하지만 10진 형태로!
ex) 0.2=> 2* 10-1
2) 고정 소수점(Fixed-point)방식
- 실수를정수로 변환하여 저장하고 , 소수점 위치는 고정
- 모든 값이 동일한 자릿수 규칙을 따름->빠른 연산 가능
SCALE=100 // 소수 둘째자리
price=int(19.99 * SCALE) // 1999
qty=int(3*SCALE) //300
total=(price * qty) //SCALE=- #5997 =>59.97
cf)[2026] 말이 트이는 cs기술면접을 통해 작성된 내용입니다.
'cs > 컴퓨터구조' 카테고리의 다른 글
| CPU 구성과 기능 (0) | 2026.01.04 |
|---|---|
| 컴퓨터의 구성 (1) | 2026.01.01 |
| 데이터와 표현- 컴퓨터의 문자 표현 (0) | 2025.12.31 |