컴퓨터구조

보수의 개념과 컴퓨터연산에서의 활용

콘파냐 2014. 2. 23. 18:37
반응형

시대가 바뀌고, 컴퓨터의 보급이 대중화 됨에 따라 주판으로 하던 계산들은 컴퓨터가 대신해주고, 주판은 점점 잊혀져 갔다. 실용적인 목적의 주산이 어린아이들의 연상능력 개발을위한 도구로 바뀌었다. 이유야 어쨌든 주판은 고대부터 사용되어왔고, 인간의 기억력을 보조하는 역할로 사용되었다. 이런 주판은 연산은 보통 10진수를 기본으로 한다. 그런데 컴퓨터의 연산은 2진수를 기본으로 하는건 다 알고 있을 것이다. 그럼 이런 도구들의 연산에 대해서 알아보자.


보수

보수의 개념을 처음 접하는 사람도 있을 것이다. 왜냐면 우리가 교육받은 초중고에서는 보수라는 개념에대해서 알지 않아도 모든 연산이 가능하기 때문이다. 그런데 컴퓨터의 2진연산에서는 보수의 개념이 등장한다. 이런 보수의 개념은 컴퓨터의 전유물이 아닌 주산에서도 있어왔던 개념이다.

주산의 기초는 10진수를 기본으로 1부터 9까지의 수의 보수에대해서 익숙히 알아야한다.

1의 보수는 9가 되고 2의 보수는 8이되면 각각의 수의 보수는 더해서 10이 되는 수가 각각의 수의 보수가 된다.



오른편부터 세로로 각각은 자리수를 나타내고 왼편으로 갈수록 자리수는 한자리씩 증가가된다. 아래의 4개의 알은 각각 1을 뜻하고 위에 있는 한개의 알은 5를 뜻한다. 1부터 9까지 세어보면 아래알은 1개씩 올려 4까지 세었다면 5를 셀때는 아래알 네개를 다시 원위치 시키고 위에 5에 해당하는 알을 내린다. 다시 6부터는 아래 알을 하나씩 올려서 9까지 만든다. 그리고 10이 되려면 모든 알을 원위치 시킨후 자리올림으로 왼편줄로가서 아래알 한개를 올린다. 이것이 주산의 덧셈의 기본이다. 


그러면 8+4는 어떻게 계산을 할까?

이경우 순서대로 8을 먼저 주판에 올린다음 4를 더하면 되는데, 4를 더할때 자리수의 올림이 생기게 된다. 자리수의 올림이 생기게 되면 보수를 이용해서 덧셈을 하게 되는데 우선 자리수올림으로 10을 올린 상태에서 8에서 4의 보수를 뺀다. 즉 4의 보수 6을 빼면 일의자리수는 2가 된다. 결과 12라는 값이 나온다.

뺄셈도 비슷한다.

15-7의 경우를 생각해보자. 일의 자리를 보면 피감수가 감수보다 작다. 때문에 자리내림이 생기게 되고 피감수의10의 알은 내린후 1의 자리에서 감수(7)의 보수 3을 더해준다. 그러면 5+3이 되어서 8이 되게 된다.




주제를 좀 벗어나 암산에 대해 이야기하자면 정말 기계적인 동작이지만, 암산의 경우 이런 주판이 머리속에 각인이 되게되면 연상능력(즉 머리속에 주판이 또렷하게 각인되는 능력이 발달하며) 이런 주판알들의 세세한 움직임들은 추상적인 데이타가아닌 말 그대로 포토이기 때문에, 연습을 통해 엄청난 속도의 연산을 가능하게 한다.(이 속도는 일반인들의 계산과는 차원이 다른 속도다) 나도 주산을 초등학교때 수의 체계를 배울때부터 배워왔기 때문에, 주산을 안배운 사람과 연산방식이 달랐다. 그리고 이런 연산의 단점이 있는데, 한국의 교육현실에서 이런 연상능력을 꾸준히 개발하기는 매우 힘들고, 속도도 중요하지만 정확도에서는 직접 쓰는 계산보다 보통 정확도가 떨어지기 때문에(중고등학교 때도 계속 주산을 배우기가 쉽지 않기 때문에, 지속적인 연습이 없을경우 한국 교육현실에서는 연상능력은 떨어질 수 밖에없다.), 두뇌 개발을 위한 수단정도가 적당할 듯 싶다. 결국 나의 경우도 속도보다는 정확도와 타협을 하는 과정에서 뒤늦게 꽤 애를 먹은듯하다. 어짜피 지금은 두가지를 병행하지만, 내가 누군가에게 교육을 시킨다면 주산도 좋지만 그림이나 피아노 교육을 시키고 싶다.


아무튼 보수의 개념은 그렇게 어려운 개념은 아니고, 주산을 안배운 사람도 보수를 이용한 계산을 해온 분도 있을 것이다.


그럼 컴퓨터의 경우를 살펴보자. 컴퓨터의 경우는 2진법을 사용하고, 2진법의 특성상 0과 1 두가지로 표현되기 때문에, 보수연산을 하기가 더 쉽다. 각각의 비트를 반전시킨후 1을 더하게되면 그 수의 2의 보수가 되기 때문이다.(비트의 반전: 0->1, 1->0 )


덧셈의 경우는 단순히 더하면 되지만 컴퓨터에서 뺄셈은 위에서 말한 보수를 이용하여 계산한다.

이진수 A와 이진수 B의 차를 구하려면 A에서 B의 2의 보수를 구한 뒤에 더해주면 된다.

기본적인 계산은 이렇지만 그 결과에 따라서 다음 과정은 두가지로 나뉜다.


첫째, 결과 자리올림수가 있다면 자리올림수를 뺀 값이 결과 값이다.

둘째, 결과 자리올림수가 없다면 결과값의 2의 보수를 구한후 음수값으로 취급한다.


위 연산은 잘 보면 주산의 연산과 동일하다. 사실 아까 주산에서 15-7의 경우도 15에 07의 보수 93(자리수를 큰자리수로 맞춘다.여기선 2자리)을 더한후 올림수를 빼면 8이 나온다.


그러면 자리 올림수가 없는 경우를 살펴보자.

피감수가 감수보다 큰 경우 즉 음수가 나오는 경우다.

0110 - 1011 의 경우를 살펴보자.

피감수의 2의 보수는 0101이된다. 감수와 피감수의 2의 보수를 더하면 1011이 된다. 최상위자리에서 자리올림은 없다. 그러면 결과값의 2의 보수를 구한다. 즉 0101이되고 음수로 취급한다.

0110-1011=-(0101)

10진수로 검산해보면

6-11=-(5) 로 검산결과 이상없다.


이렇게 주산의 연산과 컴퓨터의 연산은 진수는 다르지만 연산 방식은 관련이 있다. 과장하면 주판도 작은 컴퓨터의 일종이랄까..

반응형