본문 바로가기
Post 3. 개발 일지/2. 자기개발

2진수 정수: 부호절대값, 1의 보수, 2의 보수

by 조단단 2017. 12. 17.

 오늘은 2진수 정수의 표현 방법이다 !

2진수 정수 / 2진수 실수로 나누어서 보자.

 

 2진수 정수 표현

1. 부호절대값

2. 1의 보수

3. 2의 보수

 

1. 부호절대값 방법은 최상위 비트에 부호를 저장하고,

나머지 비트에 정수의 절대값을 저장하는 방법이다.

 

5라는 정수를 저장한다면,

0 1 0 1 (양수이므로 최상위 비트는 0)

-3이라는 정수를 저장한다면,

1 0 1 1 (음수이므로 최상위 비트는 1)

 

2. 1의 보수 방법은 0과 1을 반전시키면 된다.

5를 표현한 0 1 0 1을 반전시키면 1 0 1 0,

-3을 표현한 1 0 1 1을 반전시키면 0 1 0 0이다.

 

3. 2의 보수 방법은 1의 보수 표현(반전) 후 최하위 비트에 1을 더하면 된다.

 (1) 5를 부호절대값으로 표현: 0 1 0 1

 (2) 1의 보수를 구하면(반전): 1 0 1 0

 (3) 2의 보수를 구하면(1 더하기): 1 0 1 1

 

 (1) -3을 부호절대값으로 표현: 1 0 1 1

 (2) 1의 보수를 구하면(반전): 0 1 0 0

 (3) 2의 보수를 구하면(1 더하기): 0 1 0 1

 

 

 보수를 사용하는 이유는 빼기 연산을 수행하기 위해서이다.

그런데 1의 보수와 2의 보수, 두 가지 방법이 있는 이유는 뭘까.

 

 위에서 5라는 정수를 기준으로 보자.

5 + (-5) = 0 이라는 연산을 2진수로 보자.

 

 먼저, 1의 보수

   0 1 0 1

+ 1 0 1 0

= 1 1 1 1

 

 다음, 2의 보수

   0 1 0 1

+ 1 0 1 1

= 0 0 0 0

 

 1의 보수 연산의 결과는 1 1 1 1이 나왔다.

1의 보수에서는 0 0 0 0과 1 1 1 1이 모두 0이라고 한다.

해석하자면 1의 보수는 0이 두 가지 종류가 있다고 하면 될까.

 

 2의 보수 연산의 결과는 0 0 0 0이 나왔다.

1의 보수는 연산의 결과에 +1을 해줘야하기에,

상대적으로 2의 보수에 비해 연산이 느리다고 한다.

 

 

 정리하자면 보수의 개념은 컴퓨터에서 뺄셈 연산을 수행하기 위해 나온 것이다.

음수 표현은 1의 보수, 2의 보수 두 방법이 있지만, 효율을 위해 2의 보수를 사용. 끝!

댓글