- 컴퓨터의 2진법 체계에서 수의 개념이나 수에 대하여 간단하게 계산하는 방법. 덧셈을 기반으로 보수에 의한 덧셈과 시프트를 이용하여 사칙연산을 수행한다.
- 가산기(加算器, Adder)는 2진수 덧셈을 수행하는 조합 논리회로이며, CPU를 비롯한 연산제어장치는 가산기와 같은 여러 종류의 회로로 구성된다.
- 1비트의 2진수 계산을 할 수 있는 반가산기(HA : Half Adder)와 전가산기(FA : Full Adder)가 있다.
- 1비트의 두 입력값에 대해 덧셈을 실행하는 회로로 산술 연산의 기본이 된다.
- 2개의 2진수 입력(A,B)과 2개의 2진수 출력을 가지며, 출력변수는 각각 자리올림수(C, Carry)와 합(S, Sum)가 있다.
- S = A⊕B = A xor B, C = A·B = A and B로 나타낼 수 있다. 자세한 내용은 논리 연산 회로 참고.
- 1비트의 세 입력 값(2개의 2진수와 자리올림수) 에 대해 덧셈을 실행하는 회로이다.
- 3개의 입력(A,B,Z)과 2개의 출력(S,C)을 가지며, 식은 A+B+Z로 나타낼 수 있다.
- 세 입력 값을 모두 0,1이라는 2진수의 숫자로 보고 그 합을 계산하면 전가산기의 동작을 쉽게 이해할 수 있다. 예를 들어 산술합이 10(2)(십진법으로 2)라면 S는 1, C는 0이 되는 방식.
- 컴퓨터에서는 8비트, 16비트, 32비트, 64비트등의 데이터 단위로 움직이기에, 가산기도 이에 대응하여 멀티 비트를 처리할 수 있어야 한다. 기본적으로 전가산기를 여러개 묶어서 사용하며, 이를 멀티 비트 가산기라 한다.
- 대표적으로는 리플 캐리 가산기, 자리올림 예측 가산기(Carry Look ahead Adder) 등이 있다.
- 감산기(減算器, Subtracter)는 2진수의 뺄셈을 수행하는 조합 논리회로로, 반감산기(HS : Half Subtracter)와 전감산기(FS : Full Subtracter)가 있다.
- 1비트로 구성된 2개의 2진수를 뺄셈할 때 사용된다.
- 2개의 입력 변수와 2개의 출력 변수를 가지며, 출력 변수는 차(D, Difference)와 빌림수(b, borrow)가 있다.
- 입력 변수를 a,b라 할 때, D = A⊕B = (A xor B), b = A'·B = (not A) and B로 나타낼 수 있다.
- 1비트의 세 입력값(2개의 2진수와 자리빌림수)에 대해 뺄셈을 실행하는 회로이다.
- 3개의 입력(A,B,Y)과 2개의 출력(D,b)을 가지며, 식은 A-B-Z로 나타낼 수 있다.
- D=A⊕B⊕Y, b=A'B+Y(A'⊕B')로 나타낼 수 있다.
- 산술 연산 회로는 사칙연산과 비교 연산을 수행할 수 있어야 하며, 이런 연산을 수행하기 위한 가산회로, 감산회로, 곱셈 및 나눗셈 회로가 있다. 대부분의 회로는 간소화하기 위해 전가산기를 활용한 가산 회로를 사용하여 설계한다.
- 연산 결과를 저장하기 위해 기억 레지스터(MBR)과 누산기(AC), MQ 레지스터를 사용한다. 자세한 내용은 이 항목과 이 항목을 참고.
- 기억 레지스터(Memory Buffer Register)는 기억 장소로부터 읽어드린 자료를 가지고 있는 레지스터이다.
- 누산기(accumulator)는 연산의 결과를 일시적으로 저장해 두는 레지스터이다.
- MQ 레지스터는 연산의 결과로 자릿수가 늘어났을 때 늘어난 자릿수만큼의 모든 값을 기억할 수 있는 보조 누산기이다.
- 덧셈은 기억 레지스터와 누산기의 내용을 가산기로 보내어 연산한다. 가산기에 계산된 결과는 누산기에 기억된다. 따라서 누산기는 더해지는 값을 기억했지만, 연산 후에는 연산의 결과를 기억하게 된다.
AC + MBR → Adder의 연산값 → AC에 저장
- 뺄셈은 기억 레지스터의 내용을 보수기를 거쳐 2의 보수로 바꾼 후 가산기에 입력하여 덧셈을 실행하면 결과 값이 나온다.
AC + MBR의 2의 보수 → Adder의 연산값 → AC에 저장
- 곱셈은 곱하는 수(승수)를 기억 레지스터에, 곱해지는 수(피승수)를 누산기에 기억 시킨후 가산기에서 덧셈을 하여 곱셈의 결과가 되도록 한 뒤 그 값을 MQ 레지스터와 누산기에 연결된 형태로 저장한다.
AC × MBR → Adder의 연산값(AC의 값을 MBR의 값만큼 더한다) → AC, MQ레지스터에 저장
- 나눗셈은 기억 레지스터의 내용을 보수기를 거쳐 2의 보수로 바꾼 후 누산기의 내용과 가산기에서 덧셈을 하면 결과값이 나온다. 피제수(나누어 지는 수)를 MQ 레지스터와 누산기를 연속적으로 연결한 큰 수로 기억하고, 기억 레지스터에 기억된 제수(나누는 수)로 나눗셈을 시행하게 된다. 몫은 누산기에, 나머지는 MQ 레지스터에 각각 정수 형태로 기억된다.
MQ 레지스터 AC ÷MBR → Adder의 연산값(AC의 값에서 MBR의 값만큼 나누고 몫과 나머지를 구한다) → AC(몫), MQ 레지스터(나머지)에 저장
- 비교 연산은 어떤 두 값 A와 B를 비교하여 어느 값이 더 큰지를 알아내는 연산이다. 뺄셈을 통해 실행하며 결과는 아래의 표와 같다.
A-B의 결과 |
의미
|
-(음수) |
A < B
|
0 |
A = B
|
+(양수) |
A > B
|