검색결과 리스트
글
음수의 표현
언어로그/C/C++
2011. 6. 13. 22:53
컴퓨터에서는 모든 데이터들이 이진수로 표현된다. 어떻게 데이터들이 표현되는지 아는 것은
때로는 효율적인, 때로는 효과적으로 프로그래밍하기 위해 필수적인 요소이다.
문제가 발생하는 몇 가지 다른 음수의 비트 표현에 대해서 알아보자.
때로는 효율적인, 때로는 효과적으로 프로그래밍하기 위해 필수적인 요소이다.
문제가 발생하는 몇 가지 다른 음수의 비트 표현에 대해서 알아보자.
부호화 비트 표현법
가장 단순하게 음수를 표현하는 방법으로부호화비트 표현법이 있다. 가장 상위 비트를 부호비트로 표현하여
부호비트가 0이면 양수, 1이면 음수로 표현하는 방법이다. 하지만 두 수를 연산하는데 문제가 생기게 되는데...
4비트로 수를 표현하되 첫번째 비트가 부호비트라고 가정해보자
+ 5 => 0101
- 5 => 1101 (부호화 비트 표현)
와 같이 +5는 0101, -5는 부호비트만 바꾼 1010 으로 표현이 된다.
하지만 두 값을 더한 값은 0이 되야 하지만 결과는 0010 (2)가 되어 잘못된 결과가 나오게 된다.
1의 보수 표현법
그래서 다른 이진수 음수 표현법이 필요하게 됐고, 1의 보수표현법, 2의 보수표현법이 생겨나게 됐다.
1의 보수표현법은 음수를, 절대값의 이진수 표현에서 각 비트를 역전 시킨 값을 음수로 나타낸다.
+ 5 => 0101
- 5 => 1010 (1의 보수 표현 )
두 값 0101과 1010을 더하면 결과는 1111 이 나온다. 음수를 1의 보수로 변경했기 때문에
다시 결과를 1의 보수로로 취해주면 결과는 0000이 되어 올바른 결과가 나온다.
2의 보수 표현법
그럼 2의 보수 표현법을 알아보자. 2의 보수 표현법은 1의 보수표현법에 1을 더한 값이다
+ 5 => 0101
- 5 => 1011 (2의 보수 표현)
두 값 0101 과 1011 을 더하면 10000이 나오고, 4비트 표현이기 때문에 최상위 1비트를 버리면,
결과가 0으로 올바른 값이 나온다.
2의 보수표현법은 1의 보수 표현법보다 속도가 더 빠르기 때문에 (총 n비트라면 1의 보수표현법은 2n번의 비트 역전을,
2의 보수표현법은 1n + 1 번의 비트 역전을 수행한다.) 컴퓨터에서 음수를 표현하기 위해 2의 보수표현법이 선택되었다.
'언어로그 > C/C++' 카테고리의 다른 글
| 과제 #2 제어문/선택문을 이용해 다양한 모양그리기 (0) | 2011.06.13 |
|---|---|
| 과제 #1 입출력,연산자 (0) | 2011.06.13 |
| 음수의 표현 (0) | 2011.06.13 |
| 문자열 조작함수 직접 구현하기 (2) | 2011.04.29 |
| 라인 입출력 함수 (0) | 2011.03.27 |
| 배열의 이해 (0) | 2011.03.27 |