보수기
(♥ 0)
補數器 / complementer[1]
디지털 논리 회로 중 하나로서 입력에 대해서 보수(complement)를 취하는 기능을 한다. 논리 연산 중 NOT에 해당되는 연산을 한다.
디지털 논리 회로에서는 보수기와 가산기를 이용하여 감산을 한다. 예를 들어, 2의 보수 방법을 이용하여 3-5를 계산한다고 가정하자. 3과 5를 이진수로 나타내면 각각 3 = 00011, 5 = 00101이다. 그러나 이들만으로는 계산을 진행할 수 없다. 00011에서 00101을 뺄 수 없기 때문이다. 따라서 컴퓨터는 3-5가 아닌, 3+(-5)를 계산한다. -5를 2의 보수 방법으로 나타내면[2] -5 = 11011이다. 이들을 이용해 3-5를 계산하면, 3-5=3+(-5)=00011+11011=11110이 나온다. 11110을 2의 보수 방법으로 계산하면[3] -2가 나오므로, 정상적으로 계산이 이루어진 것을 알 수 있다.
일반적으로 1의 보수와 2의 보수를 취할 수 있는 회로로 나누며 컴퓨터 시스템에서는 2의 보수를 이용하여 연산을 하는 것이 일반적이다.
1의 보수는 모든 입력 비트를 반전[4] 시키는 것이며, 2의 보수는 1의 보수의 값에 1bit를 더하는 것이다.
비전공자들을 위해 설명하자면 0부터 9까지밖에 표현 못하는 기계가 있다고 가정했을 때 뒤로 2만큼 가는 것 대신에 앞으로 8을 돌려서 뺑뺑이 돌려서 계산하는 개념이다. 어차피 9에서 한번 더 플러스 시키면 0으로 돌아오니 말이다.
[1] inverter라고 설명해 놓은 책도 있다.[2] 5 = 00101에서 부호 비트(첫 번째 비트. 0이면 양수를, 1이면 음수를 나타낸다.)를 제외한 나머지 비트들을 반전하고(00101→01010), 1을 더한 뒤(01010→01011), 마지막으로 부호 비트를 양수를 나타내는 0에서 음수를 나타내는 1로 바꾼다(01011→11011).[3] 아까와는 반대로, 11110에서 1을 뺀 후(11110→11101), 부호 비트를 제외한 나머지 비트를 반전한다(11101→10010). 마지막으로 부호 비트를 양수를 나타내는 0으로 바꾼다(10010→00010). 00010은 십진수 2이고, (11110의)부호 비트는 음수를 나타내는 1이므로, 11110은 -2를 의미한다.[4] NOT 연산