ETC/자료구조

2진수의 정수 표현 방식(부호절대값, 1의보수, 2의보수)

IMyoungho 2018. 8. 20. 12:18


보수란 쉽게 말해 보충해주는 수라고 생각하면 편하다 


예를들어 3에 대한 10의 보수는 7이고  5에대한 16의 보수는 11이된다.



2진수의 정수 표현은 총 3가지다~


* 부호절대값의 표현

너무쉽다~ 

최상위 비트 MSB(Most Siginificant Bit)에 부호를 표시하고 나머지 비트에 표현할 2진수의 값을 넣어주면 끝난다.

ex)

0 0 0 1 0 1 0 1 = 21

1 0 0 1 0 1 0 1 = -21


* 1의 보수

굉장히 간단하다

양수는 위의 부호절대값처럼 표현하면 된다.

보수를 취하고싶은 수를 모든비트가 1인 수에서 빼면된다.


2진수를 1의보스형식으로 변환하여 표현하면 된다.

1바이트를 이용해서 2진수를 표현하는 경우 1의 보수를 만드는 방법은 다음과 같다.


-21을 1의 보수 형식을 취한다고 하면

    1  1  1  1  1  1  1  1

-  0 0 0 1 0 1 0 1


   1 1 1 0 1 0 1 0 이 된다.


이때 제일 첫번재 비트 MSB는 부호를 나타낸다.

1일 경우 음수이며 0일경우 양수가 된다.



* 2의 보수 

양수는 위의 부호절대값처럼 표현하면 된다.

음수의 경우에는 2진수를 2의 보수로 변환하여 표현하면된다.
-> 1의 보수를 취한뒤 1을 더하면 2의보수다!

  -21을 2의 보수 형식을 취한다고 하면

    1  1  1  1  1  1  1  1

-  0 0 0 1 0 1 0 1


                         +1

   1 1 1 0 1 0 1 1 이 된다.



~> 결론!!

* 부호절대값 형식의 경우 사용하기에는 편리해 보이나 막상 컴퓨터에서 사용하게 되면 덧셈기와 뺄셈기를 따로 구현해야함으로 사용되지않는다.


* 1의 보수의 경우에도 절대값 계산이 따로 필요하지 않고 음수간의 덧셈으로 뺄셈을 할 수 있지만 +0(00000000) 과 -0(11111111)이

  존재하게되는 논리적 오류가 발생된다는 단점이 있다.


* 2의 보수 -0을 제거했기 때문에 덧셈 연산에서 처리를 더 단순화시키게 되며 가장 단순하면서 효율적임으로 컴퓨터 시스템에서 사용되고 있다!


반응형