2의 보수
방법1: 부호 절대값 표기법 방법2: 1의 보수

현재 부호 있는 정수를 표현하는 가장 흔한 방법은 2의 보수
2진법에서 radix complement
- n자릿수를 가진 이진수 N의 2의 보수 =
- 이 정의는 에서 성립함
- 0까지 포함하려면 2의 보수를 다음과 같이 정의:
2진법에서 radix complement를 쉽게 구하는 방법:
- diminished radix complement(1의 보수)를 구한 다음 1을 더하면 됨
- 비트 다 뒤집고 + 1

0000 0000의 radix complement = 0
- 방법 1, 방법 2와 다르게 0이 1개
0000 0001의 radix complement = -1 …0111 1111의 radix complement = -127
이렇게 절대값을 1씩 증가하면서 구하다 보면 128은 음수만 존재함
1000 0000- radix complement 구해도 자신과 동일한 값이 나옴
- 음수 0이 사라지고, 표현할 수 있는 음수가 늘었음
방법 3에서는 가장 왼쪽 비트가 부호를 나타냄
- 방법 1, 방법 2도 마찬가지
복습 퀴즈
(Q1) -1(10)을 2의 보수를 이용해서 표현한 8비트 값을 고르세요
- 1을 8비트 2진수로 표현하면 0000_0001
- 0000_0001의 2의 보수를 구하면 1111_1111
(Q2) 2의 보수를 사용하는 시스템에서 127을 표현한 것을 고르세요
- 양수니까 바로 2진수 비트패턴을 구하면 0111_1111
(Q3) 다음은 2의 보수를 사용하는 시스템에서 가져온 어떤 8비트 정수입니다. 이를 10진수로 변환하면 어떤 값이 될까요? 1010 1010(2)
- 가장 왼쪽 비트가 1이니 음수
- 음수는 바로 10진수로 변환하기 어려우니 이 음수의 절대값을 구하기
- 음수를 양수를 바꾸려면 2의 보수를 구하면 됨
- 0101_0110
- 86(10)
- 원래 값은 -86(10)
(Q4) 다음은 2의 보수를 사용하는 시스템에서 가져온 어떤 8비트 정수입니다. 이를 10진수로 변환하면 어떤 값이 될까요? 0101 0101(2)
- 가장 왼쪽 비트가 0이니 양수
- 양수는 바로 10진수로 변환
- 85(10)
(Q5) 2의 보수를 사용하는 시스템에서 4비트 짜리 정수형이 있다면 이 정수형의 표현 가능한 수의 범위는?
- 2의 보수를 사용하는 시스템에서 가장 왼쪽의 비트는 부호를 나타냄
- 가장 왼쪽 비트를 제외하고 000부터 111까지 양수 표현
- 0~7
- 0000은 2의 보수를 구해도 0000으로 2의 보수를 사용하는 시스템에서 0은 1개임을 확인
- 001부터 111까지 대응하는 음수를 구하면 111~001
[1111,1001][-1,-7]
- 마지막으로 남는 1000은 -7에서 1을 뺀 값으로 -8
- 최종 표현 가능한 수 범위는
[-8,7]