foxpacking

Programming Lessons

Korean Programming 기초

보수 완벽 정리

보수에 대한 완벽 정리

컴퓨터가 사용하는 진법이나 변수에 대해서 공부를 하셨으면 컴퓨터가 데이터를 어떻게 사용하는 것은 잘 알 수 있었습니다.

하지만 진법이나 진수에서는 양수에 대한 값만 나타내고 있는데 그러면 음수는 어떻게 표현 할지 궁금증이 드시죠?

저도 프로그래밍을 공부하면서 궁금증을 가지는 부분이라고 생각했습니다. 처음에는 저도 당연히 컴퓨터는 계산이 되고 알아서 잘 되는 줄 알았습니다.

그렇게 당연하다고 느끼는 부분들이 하나를 배우고 또 배우면서 컴퓨터가 음수를 표현하기 위해 보수라는 걸 사용하게 되는 것을 알게 됐습니다.

이 글에 보수 완벽 정리를 보시면 컴퓨터에 대해서 한발 더 다가갈 수 있고 보수라는 개념도 명확히 이해를 하실 수 있습니다.

보수를 알면 컴퓨터에 음수도 알고 컴퓨터에 대해서도 조금 더 알 수 있는 시간이 될 수 있습니다. 이 글을 읽으신다면 분명히 보수에 대해서 완벽한 정리가 되실 수 있습니다.

보수는 무엇인가?

보수는 진법이 정해지고 임의 수를 제공하고 그 수와 얼마가 더해져야 정해진 진법의 제곱 되는 수가 될 수 있는 지를 표현을 하는 것이 보수의 개념입니다.

다른 말로는 임의 수에서 얼마가 더해져야 진법의 제곱이 되는 수와 같아지게 만듭니다. 여기서 더해져야 진법과 같아지는 수가 보수가 됩니다.

예를 들면 10진법에서 4의 보수는 6이 됩니다. 왜냐하면 10진법에서 4는 제곱을 한다고 해도 10이기 때문에 4가 몇을 더해야 10이 되는 가를 맞추면 됩니다.

10 – 4 = 6이 됩니다. 그래서 10진법에 4의 10의 보수는 6이 되는 것입니다.

만약에 10진법에서 98의 보수를 하면 제곱을 해야 되기 때문에 100을 기준으로 계산을 하면 100 – 98 = 2이기 떄문에 98의 10의 보수는 2가 됩니다.

보수를 왜 공부를 해야 할까요?

보수의 개념을 알겠는데 도대체 왜 보수를 공부를 해야 하는 걸 까요? 

이런 궁금증을 가질 수 있습니다. 그것은 바로 컴퓨터가 연산을 해야 하는데 연산을 덧셈 밖에 할 수가 없기 때문에 보수의 개념이 필요 한 것 입니다.

컴퓨터는 2진법으로 데이터를 표현하기 때문에 예를 들어 0101이라고 하면 보수 는 1010이 됩니다. 보수는 반대의 념이기 때문에 0이면 1이 되고 1이면 0으로 만들어서 사용을 하게 됩니다.

그럼 위에서 말씀을 드린 내용을 0011같이 제일 앞에 있는 자리가 0이면 양수 1100과 같이 제일 앞에 있는 수가 1이면 음수로 표현을 하기 규칙을 정합니다.

그리고 0011의 1의 보수는 1100이 됩니다. 0과 1의 위치가 서로 바뀌게 되기 때문입니다.

1의 보수법

1의 보수법은 양수는 첫자리가 0으로 시작하고 음수는 첫자리가 1로 시작하면서 양수와 반대가 되는 값을 음수로 칭해서 사용을 합니다.

예를 들어 0010은 값으로 2의 1승이라서 양수로 값은 2가 됩니다. 0010의 보수는 0을 1로 1을 0로 바꿔주시면 1101이 됩니다. 

이런 경우 저희가 알고 있는 10진법으로 표현을 하면 앞자리가 1이라 음수인걸 알 수 있고 이것 다시 반대로 0이 있는 자리의 승을 사용 값을 표현하면 됩니다.

0이 2의 1승에 있기 때문에 2가 되고 첫 자리가 1이기 때문에 -2가 됩니다.

아래 표를 보면 좀 더 쉽게 이해를 하실 수 있습니다.

1의 보수 사진

그럼 1의 보수로 컴퓨터가 연산을 하게 됩니다. 컴퓨터는 더하기 연산 밖에 할 수 없기 때문에 양수와 음수 개념으로 3 – 1이라고 하면 3 + (-1) 이렇게 연산을 하게 됩니다. 그럼 1의 보수를 가지고 3 – 1을 해보겠습니다.

0011+ 1110 =   10001 값이 이렇게 나오게 됩니다. 하지만 자릿수가 넘어가는 값은 버리게 되어 있기 때문에 0001이 되게 됩니다.

그러면 10진법으로 보면 2의 0승이기 때문에 1이 되게 됩니다. 그러면 저희가 알고 있는 3 – 1은 2가 나와야 하는데 1이 나오기 때문에 문제가 생깁니다.

그래서 연산한 결과에 1을 추가적으로 더하기를 함으로써 정확한 답이 나올 수가 있습니다.

※ 1의 보수 법은 연산을 한 이후에 무조건 1을 더해주는 연산을 진행해야 합니다.

2의 보수법

2의 보수법은 위에 1의 보수법을 보완하고자 나온 보수법입니다.

연산 이후에 추가적으로 1을 더해주는 작업을 해야 하는데 이런 부분을 해소하고자 1의 보수에 바로 1을 더해서 사용을 하는 것입니다.

이렇게 사용을 하면 연산 이후에 추가적으로 1을 더해주는 불편한 사항이 사라지게 됩니다.

또한 위에 1의 보수법표에서 보이지만 0과 -0이 존재 하는데 0은 0이지 음수가 없습니다.

그래서 그 한자리를 불필요한 -0이 차지하고 있어서 숫자 표현의 자리가 한자리가 줄게 되는 부분도 고칠 수가 있기 때문에 컴퓨터는 지금의 거의 2의 보수법을 사용하고 있습니다.

※ 양수는 보수법과 무관합니다.

아래 표는 음수 1의 보수법과 2의 보수법을 비교합니다. 

1의 보수와 2의 보수를 비교하는 사진

위의 표와 같이 -1은 1의 보수법에서 1110인데 1을 더해서 2의 보수법에서는 1111이 됩니다. 이렇게 함으로써 -0이 없고 -7까지 표현을 할 수 있는 값을 -8까지 값을 표현을 할 수 있습니다. 

또한 빼기 연산을 해보면 3 – 1같은 경우 3 + (-1)과 같이 계산을 해보면 3은 0011 이고 -1은 1111이 됩니다. 이 두수를 더하면 0011 + 1111 = 10010 자릿수가 4자리기 때문에 1을 빼주면 값이 0010이 됩니다.

1이 있는 자리는 2의 1승이기 때문에 값이 2가 됩니다. 그러면 3 – 1가 똑같은 2가 결과 값으로 나온다는 것을 알 수가 있습니다.

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나