본문 바로가기

CS ﹒ Algorithm/Computer architecture

컴퓨터 구조 (2) 2진수의 더하기 연산/ 논리 연산/ 음수 표현

1 정도의 할인으로 바꿔주세요.

 

 

 

 

1. 2진수의 연산

 

 

 

 

우리가 초등학생 시절 배운 것처럼, 각 자리수끼리 더해주고 표현할 수 있는 수를 넘어선다면 다음 자리에 올림해주면 된다.

다만 2진수는 1이 한자리에 차지할 수 있는 최대 값일 뿐이다.

 

 

 

 

 

 

 

2. 논리 연산

 

 

 

이 표는 다양한 논리식의 입력 변수와 가능한 출력 결과들을 표 형식으로 요약한 것으로, 진리표(truth table)라고 부른다.

Boolean에 대해 알고 있다면 아주 당연한 내용들이 적혀있는 표지만, 여기서 우리가 눈여겨 볼 점은 이진 덧셈의 논리 연산은 XOR 연산으로 얻게되는 것과 동일한 결과를 제공한다는 것이다.

실제로 가산기에서 XOR은 합계에 사용되며 AND는 자리 올림에 사용된다.

또한 NAND와 NOR은 각각 반전시켜 AND와 OR과 동일한 결과를 얻을 수 있기 때문에 NAND 게이트와 NOR 게이트에 사용된다.

 

 

 

 

 

 

3. 음수 표현 방법

 

(1) 부호와 크기 표현법

 

가장 왼쪽 비트(MSB)를 음수 혹은 양수 부호로 사용하며, 1비트를 부호에 사용하기 때문에 4비트의 경우 정수는 0부터 7까지, 음수는 -1부터 -8까지 표현 가능하다.

한 비트를 부호에 사용하고 나머지 비트를 수의 크기로 나타내기 때문에 부호와 크기(sign and magnitude) 표현법이라고 불린다.

그러나 부호와 크기 표현법은 거의 사용되지 않는다.

일단 부호와 크기 표현법에서 0을 표현하는 방식은 +0과 -0으로 비트를 낭비한다, 또한 부호와 크기 표현법을 사용하면 XOR과 AND를 통한 덧셈 계산을 사용할 방법이 없다.

XOR과 AND를 통한 계산법이 무엇이였는지 생각해보자. 바로 일반 덧셈과 자리 올림이다. 아래 예시를 확인하면 뭐가 문제인지 알 수 있다.

 

그대로 계산하면 1과 -1의 합이 2가 나온다.

그만 알아보자.

 

 

 

(2) 1의 보수 표현법

 

 

양수의 모든 비트를 뒤집어서 실수를 표현하기 때문에 1의 보수(one's complement) 표현법이다.

비트를 부호 비트와 나머지로 나누는 것은 비슷한데, NOT 연산을 통해 보수를 얻는다.

이 방식은 부호와 크기 표현법과 달리 정상적인 연산이 가능하기는 하다.

 

 

MSB에서 올림이 발생할 경우 LSB로 올림을 전달하는데 이를 순환 올림(end-around carry)라고 부른다.

그러나 이 방식은 순환 올림 처리를 위해 하드웨어가 추가적인 연산을 해야하기 때문에 비효율적이며, 여전히 0이 두개인 문제는 해결되지 않았다.

따라서 결국 이 방식도 현대에는 사용하지 않는다.

 

 

(3) 2의 보수 표현법

 

우리가 알고 있는 상식적인 연산이 가능하다.

 

2진 정수를 NOT 연산으로 반전시킨 뒤, 1을 더하면 해당 정수의 음수를 얻을 수 있다.