-
2진수의 정수 표현 방식(부호절대값, 1의보수, 2의보수)ETC/자료구조 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을 제거했기 때문에 덧셈 연산에서 처리를 더 단순화시키게 되며 가장 단순하면서 효율적임으로 컴퓨터 시스템에서 사용되고 있다!
반응형댓글