이진 연산(Binary Arithmetic)
이진 연산의 기본 원리는 십진수와 같지만, 2를 기준으로 자리올림(carry)과 빌림(borrow)이 발생한다는 점이 다르다
덧셈

뺄셈

곱셈

나눗셈

음수 표현 방식
컴퓨터는 부호를 표현하기 위해 크게 세 가지 방식을 사용한다
부호 크기 표현(Sign-Magnitude)
구조: MSB(가장 왼쪽 비트)는 부호(0: 양수, 1: 음수), 나머지 절댓값이다
- 예시:
표현 범위:
- 예시: n=4 비트: -7 ~ +7
한계점: 0000(+0)과 1000(-0)으로 0이 두 개 존재하며, 는 정의되지 않는다
1의 보수 표현(1’s Complement)
1의 보수는 양수 이진수의 모든 비트를 반전 시켜서 음수를 만드는 방식이다
수학적 정의:
표현 범위:
- 예시: 4비트: -7 ~ 7
한계점: 여전히 0이 두 개 존재하며, 덧셈 시 발생하는 자리올림을 다시 끝자리에 더해줘야 하는 번거로움이 있다

2의 보수 표현(2’s Complement)
2의 보수는 음수를 표현하고 뺄셈을 덧셈으로 처리하기 위해 사용하는 방식이다
수학적 정의:
방법: 1의 보수를 취한 뒤 최하위 비트(LBS)에 1을 더한다
표현 범위:
- 개의 숫자를 중복 없이 완벽하게 표현함

2의 보수 덧셈
양수인 것처럼 연산하고, 부호 비트에서 발생하는 올림수는 무시한다(단, 오버플로우 검사가 필요하다). 즉, 2의 보수의 가장 큰 장점은 부호와 상관 없이 일반적인 이진수 더하기와 똑같이 계산한다는 점이다

2의 보수 뺄셈
뺄셈를 수행할 때, 뺄셈을 음수의 덧셈으로 변환하여 처리하는 방식이다. 이때 뺄수의 비트를 반전 시킨 후, 가산기의 하위 비트 Carry-in()에 1을 입력하면 별도의 변환 과정 없이 곧바로 2의 보수를 더한 것과 같은 결과를 얻을 수 있다

1의 보수 덧셈
1의 보수 방식에서 덧셈을 할 때 가장 중요한 특징은 순환 캐리(End-around-Carry)이다
- 방법: 양수끼리 더하듯 연산하되, 최상위 비트에서 올림수가 발생하면 이를 버리지 않고 최하위 비트에 다시 더해준다
주의사항
연산 결과가 할당된 비트 범위를 넘어가는지 확인하는 오버플로우 검사가 반드시 필요하다

실수의 이진 표현(Binary Representation of Fractions)
실수를 이진수로 바꿀 때는 정수부와 소수부를 나누어 처리하는 것이 기본이다
-
정수부: 4, 8, 16비트 등 고정된 길이를 가지며, 가장 앞의 MSB가 부호를 결정한다
-
소수부:
- 소수의 정밀도에 따라 가변적인 길이를 가질 수 있다
- 계산법: 소수부에 2를 계속 곱하여, 소수 부분이 0이 될 때까지 반복한다(이때 정수 부분으로 나오는 숫자가 이진수 값이 된다)
-
예시: 0.625를 이진수로?
- → 1
- → 0
- → 1
- 결과:
음의 소수 표현(Negative Fractions)
실수의 소수부분을 표현할 때 정수부와 소수부로 나누어 처리한다
- 정수부: 양수 표현 방식과 동일하며, 고정된 길이를 가진다. MSB는 전체 숫자의 부호를 결정한다
- 소수부: 1의 보수 또는 2의 보수 시스템을 그대로 적용한다
- 2의 보수: 가변 길이 또는 고정 길이 표현이 모두 가능하다
- 1의 보수: 반드시 고정 길이 표현을 사용해야 한다
보수 방식별 변환 과정 비교
- 예를 들어, 를변환하는 과정은 다음과 같다
| 구분 | 1의 보수 방식 | 2의 보수 방식 |
|---|---|---|
| 변환 방법 | 모든 비트를 반전 | 1의 보수에 LSB + 1 |
| 단계1 | 0101.101 | 0101.101 |
| 단계2 | 반전→ 1010.010 | 반전→ 1010.010 |
| 단계3 | - | (LSB 1)→ 1010.011 |
계산 결과 검증 방법
두 가지 방법이있다. 정수 검증법과 원리는 동일하다
- 방법 1: 역과정 수행
- 구한 결과값에 대해 다시 보수를 취해본다 (비트 반전 후 2의 보수라면 LSB에 1 더하기)
- 이 결과가 원래의 양수 값으로 돌아오면 정답이다
- 방법 2: 2의 거듭제곱 가중치 합산
- 각 비트 자리에 할당된 가중치를 모두 더해 십진수 값과 비교하는 방식이다
- MSB 가중치: 부호 비트이므로 의 가중치를 가진다
- 2의 보수: 이 가중치 합산 방식이 항상 정확하게 성립한다
- 1의 보수: LSB의 위치(비트 길이)가 어디냐에 따라 값이 달라지므로, 반드시 전체 비트 길이를 고정한 상태에서 계산해야 한다