훈, IT 공부/컴퓨터기초

1의보수 2의보수에 대한 정리

IT훈이 2018. 2. 8.
반응형

1의보수와 2의 보수 알고넘어가기

▶ 보수란?
- 보수(補數)는 보충을 해 주는 수를 의미합니다. 
- 예를들어서 1에 대한 10의 보수는 9 , 4에 대한 10의 보수는 6, 3에 대한 17의 보수는 14의 개념입니다. 2에대한 1의 보수는 1이다.
- '두 수의 합이 진법의 밑수(N)가 되게 하는 수
 
▶ 1의보수
- 1의 보수란 어떤 2진수를 각 자리수의 값이 1인 수와 빼면 1의 보수를 얻을 수 있습니다.  0 -> 1 // 1 -> 0 그냥 바꾸는 겁니다.
- 실질적인 데이터 값은 8비트중에 7비트만 사용합니다. 최상위 비트는 '+-' 부호를 결정하기 때문입니다.
- 컴퓨터는 2의 보수를 사용합니다 이유는 1000 0000 -0  // 0000 0000 +0  '0'이 두개 존재하기 때문입니다.
 
예시 ) 0111의 1에대한 보수를 구하면 1000이 됩니다. 

 

 

 
▶ 2의 보수

- 2의 보수는 1의 보수에 1을 더한 값과 같습니다.

 

예시) 0111에 대한 2의 보수를구하기 위해서는 1을 보수를 먼저 구합니다. 1000이 나오죠? 그 뒤에 1을 더하면 2의보수 1001을 얻을 수 있습니다.ㅣ;

  더하기 1-> 

 

 

 

 

 덧셈 : 기본적인 덧셈입니다. 10진수 덧셈을 진행하듯이 2진수 덧셈을 하시면 됩니다.

 

예시) 2진수 1101 + 1001 = 10110 10진수처럼 덧셈하시면 됩니다. 간단하죠?

 

 

 

 

 뺄셈 : 컴퓨터 내부에서는 덧셈만 가능하기 때문에 뺄셈은 보수를 이용하여 덧셈이 가능하게 변경합니다.

 

 1의 보수 뺄셈 

1. 빼는수의 1의 보수를 구한다음 더합니다.

2-1. 덧셈결과에 자리올림이 생겼다면 최하위 비트에 1을 더하고 자리올림된 것은 제외합니다.

2-2. 덧셈결과에 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 '-' 부호를 붙입니다.

 

예시1) 2진수 1101 - 1001 -> 1101 + 0110 = 10011 (오른쪽 피연산자의 1의 보수를 구하고 더합니다) -> 결과:0100 (최상위 비트 1을 제외하고 최하위 비트에 1을 더합니다.)

 

   

  

 

 

 

 

예시2) 2진수 0101 - 1001 -> 0101 + 0110 = 1011 (오른쪽 피연산자의 1의 보수를 구하고 더합니다) -> -0100 ( 연산결과에 1의보수를 구합니다. 그리고 '-' 를 붙입니다.)

 

 

 

 

◎ 2의 보수 뺄셈

1. 빼는 수의 2의 보수를 구하고 더합니다 

2. 최상위비트 자리올림이 생겼다면 자리올림을 제외한 나머지 부분이 연산결과입니다.

2. 최상위비트 자리올림이 발생되지 않았다면 연산 결과의 2의 보수를 구한 후 '-' 부호를 붙입니다

 

예시1) 1101 - 1001 -> 1101 + 0111 = 10100 ( 오른쪽 피연산자의 2의 보수를 구한 뒤 더함 ) -> 결과 0100 ( 연산값의 최상위 비트는 제외한다)

 

 

예시2) 0101 - 1001 -> 0101 + 0111 = 1100 ( 오른쪽 피연산자의 2의 보수를 구한 뒤 더함) -> 결과 -0100 ( 연산결과에 2의 보수를 구한뒤 '-' 부호를 붙임  

 

 

 

 

반응형

댓글