본문 바로가기

BE

[프로그래밍] 2의 보수 구하기, 왜 2의 보수는 음수인가?

인트로

안녕하세요. 오늘은 프로그래밍의 개념 중 하나인 '보수'에 대해 포스팅하겠습니다.

보수란 '보충해주는 수'라는 의미를 가지고 있습니다. 10진수 10이 있을때, 4의 보수를 구하라고 하면 4를 더해서 10이 되는 숫자인 6이 '10에 대한 4의 보수'입니다. 즉, N이 있을때,  N의 '2의 보수'를 구하라고 하면 다 더해서 N이 되는 숫자인 그 '어떤 수'가 보수인 것이죠. 2진수에서 2의 보수( two's complement )는 음수를 나타냅니다. 

 

목차 

1) 왜 2의 보수는 음수인가?

2) 2의 보수를 구하는 과정

3) 2의 보수 구하는 방법 정리 

4) 2진법 계산기 사이트 소개

 

1) 왜 2의 보수는 음수인가?

10진수에서 2에 대한 10의 보수는 8입니다. 즉 2 + 8 = 10 이기 때문이죠. 2진수에서 2의 보수는, 더해서 2, 즉 2진수 표현으로 10(2)이 되어야합니다. 즉, 맨 왼쪽비트가 1로 증가하고 나머지는 0이 되어야합니다.

 

만약 4비트 기준으로 한다면, 맨 왼쪽 비트(첫번째 비트)는 떼어버립니다.

(truncate, CPU의 비트 제한으로 비트 범위 벗어나면 버려버리기 때문에)

 

우리는 4비트 기준으로 계산했으므로 결과는 0이 됩니다.

따라서 , 어떤수 + 어떤 수에 대한 2의 보수 = 0 이 되어야 하기때문에 어떤수에 대한 2의 보수는 음수가 되는 것입니다.

2의 보수는 왜 음수인가?

 

2) 2의 보수를 구하는 과정

2의 보수를 구하는 과정은 다음과 같습니다.

1. 1의 보수 구하기 

2의 보수를 구하기 위해서는 1의 보수를 만들어야합니다.

1의 보수란, A와 어떤 수를 더해서 1이 되는 수를 'A에 대한 1의 보수'라고 합니다.

예를 들어 10진수 7의 2의 보수를 만들어보겠습니다.

아래는 7의 이진수  표현입니다.

 

7의 2진수 표현

 

아래는 7의 이진수 표현과, 이진수 00000111(2) 을 비트반전을 시킨 모습입니다.

비트반전이란 NOT연산자로써, 0을 1로, 1을 0으로 반전시키는 것을 말합니다.

00000111(2) 을 비트반전시켰더니 11111000(2)이 나왔습니다.

 

7을 비트반전 시킨 모습

 

2. 가장 낮은 비트에 1 더하기 

7의 이진수를 구해 비트반전시킨 후, 1을 더합니다.

11111000(2)에 1을 더하면 11111001이 되겠죠. 

우리가 원하는 7에 대한 2의 보수가 나왔습니다. 

11111001은 10진수로 -7입니다.

7에 대한 2진수 표현

 

 

3. 2의 보수가 맞는지 확인해보기

우리가 구한 7에 대한 이진수 00000111(2) 와 111111001(2)를 더해봅니다.

더해서 10000000의 아홉자리가 나오면 성공입니다.

여기서 컴퓨터는 8비트기때문에 맨 첫번째 비트인 1은 버립니다.

두 이진수를 더해서 0이 나오면 성공입니다.

 

 

3) 2의 보수를 구하는 방법 정리

보수를 구하는 방법을 간단하게 말씀드리면 다음과 같습니다.

1) 7을 이진수로 표현한다.

2) 7에 대한 1의 보수를 구한다.

3) 구한 1의 보수에 1을 더한다.

4) 최종적으로 7에 대한 2의 보수와, 7에 대한 2진수 표현을 더해 맨 첫번째 비트는 떼고 0이 되는 지 확인한다.

 

4) 2진법 계산기 사이트 소개

손으로 일일히 2의 보수를 구해도 되지만, 우리에게는 편리하게 2의보수 계산기를 이미 구현해놓으신 천사가 계시군요.

아래 사이트에서 2진법 계산을 편리하게 이용할 수 있습니다.

 

2진법 계산기 바로가기

 

2진법 계산기 - 계산기

우리의 2진법 계산기를 가지고 10진수를 2진수로 간단하게 변환해보세요. 이 계산기를 당신의 웹사이트에서 사용해보세요 [was-this-helpful] 우리의 2진법 계산기를 가지고 10진수를 2진수로 간단하게 변환해보세요. 2진법 계산기를 사용하여 어떻게 10진수를 2진수로 바꾸나요? 2진법 계산기는 10진수를 2진수로 쉽게 바꿀 수 있습니다.  이것을 하는데 매우 간단한 변환이 사용됩니다. 2진법은 두 개의 숫자만을 이용하는 수 체계입니다. 관습적으로

ko.calcuworld.com

 

이로써, 왜 2의 보수는 음수인가? 와 2의 보수를 구하는 방법을 알아보았습니다.

프로그래밍을 공부하는 분들께 제 글이 많은 도움이 되었으면 좋겠습니다.

감사합니다 :) 

'BE' 카테고리의 다른 글

[VSCode] Visual Studio Code 테마 변경 및 추천  (0) 2021.06.14
i+1 과 i++ 의 차이점  (1) 2020.04.01