14. 부호있는 정수 표현 - 2진 보수 방식
마지막으로 C언어에서 사용하는 2진 보수 방식을 알아봅시다.
2진 보수를 이용할 때도 첫번째 비트가 0일 때는 다른 방법과 같아요.
다른 부분은 첫번째 비트가 1일 때 부호있는 정수를 나타내고 나머지 비트를 2진 보수를 취한 값이 크기로 판단한다는 것이죠.
2진수를 2진 보수를 취할 때는 1진 보수를 계산한 후에 1을 더합니다.
예를 들어 8비트의 메모리에 10010001 값이 들어있다면 첫 번째 비트가 1이므로 부호있는 정수죠.
그리고 나머지 비트인 0010001를 1진 보수를 취하면 1101110이예요.
2진 보수는 1진 보수를 계산한 값에 1을 더하므로 11011111이죠.
따라서 크기가 64+32+8+4+2+1 이므로 111이며 부호가 있어서 -110입니다.
그리고 8비트의 메모리에 00010001 값이 들어있다면 첫 번째 비트가 1이므로 부호없는 정수예요.
나머지 비트인 0010001은 크기를 나타내어 17을 의미해요.
이것은 다른 방식과 차이가 없죠.
2진 보수 방식에서 8비트(1바이트)로 표현할 때 01111111이 제일 큰 정수이고 10000000이 제일 작은 정수예요.
2진 보수 방식을 사용하면 하나의 0만 있어서 연산 처리가 쉬워요.
이러한 이유로 C언어에서는 2진 보수 방식을 사용하고 있어요.
◈ 기본 연습
1. 8비트의 메모리에 10110111값이 있고 2진 보수 방식일 때 의미하는 값을 계산하시오.
2. 8비트의 메모리에 00110111값이 있고 2진 보수 방식일 때 의미하는 값을 계산하시오.
3. 8비트의 메모리에 10진수 -116을 2진 보수 방식으로 나타내시오.
동영상 강의
[C언어 동영상 강의] 12. 메모리에 부호있는 정수 표현 방식 - 부호비트 필드 방식 13. 1진 보수 방식 14. 2진 보수 방식
정답
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[디딤돌 C언어] 19. 실수는 근사치 (0) | 2016.01.01 |
---|---|
18. Overflow와 값 잘림 현상 (0) | 2016.01.01 |
17. 정수 형식의 표현 범위 (0) | 2016.01.01 |
16. char 형식으로 정수 표현, 형변환 (0) | 2016.01.01 |
15. ASCII 코드 (0) | 2016.01.01 |
13. 부호있는 정수 표현 - 1진 보수 방식 (0) | 2016.01.01 |
12. 부호있는 정수 표현 - 부호비트 필드 (0) | 2016.01.01 |
11. 메모리, 10진수, 2진수, 16진수 (0) | 2016.01.01 |
10. 정수 형식과 표현 범위 (0) | 2016.01.01 |
9. 기본 형식(Type) (0) | 2016.01.01 |