2의 보수
보수: 어떤 수에 더해서 N이 되기 위해 필요한 수
예를 들면, 10진수에서 3에 대한 N의 보수라 하면, 어떤 수와 3을 더해서 N이 되는 수를 말한다.
즉 N의 보수는 N-3이 된다.
N이 10일 경우에 3에 대한 10의 보수는 7이 된다.
2진수에서 2의 보수는 더해서 2 즉, 2진수로 1,0이 되어야 한다. 맨 왼쪽의 비트값이 1이고 나머지는 0이여야 한다.
예를 들면, 4비트만 사용하는 컴퓨터가 있다. 10진수로 10인 2진수 1010가 있다. 1010에 대한 2(1,0)의 보수는 0110 다. 근데 이 컴퓨터는 4비트만 사용하니까 더한 수의 맨 앞의 1은 사라져 버리고 0,0,0,0 만 남게 된다. 즉 0이 된다. 그래서 2진수에서 2의 보수를 음수라고 한다.
다시 한번 요약
(가정) 4비트 컴퓨터가 있다.
→ 10진수 10인 2진수 1010 에 대한 2(1,0)의 보수는 0110.
→ 1010과 0110을 더하면 10000이지만 4비트만 사용하는 컴퓨터에서는 0000이 되어 버린다.
즉, 1010과 0110을 더했을 때 0이 되는 0110의 10진수는 -10이다.
2진수에서 음수의 값을 찾는 방법
(부호비트 포함) 11110101의 값이 있다. 부호비트가 1이기 때문에 이 값은 음수이다.
→ 음수의 값은 양수로 변환해야 값이 얼마인지 알 수 있다.
→ 11110101에 대한 2의 보수를 찾으면 해당 값의 양수를 알 수 있다.
→ 11110101 반전 → 00001010
→ 1을 더해준다. → 00001011
→ 00001011 의 10진수는 11.
즉, 11110101은 -11.
끝맺으며
- 2진수에 대해 자세히 알 수 있는 계기가 되어 좋았다.
- 그 전에는 이해하지 못했던 비트연산까지 이해할 수 있어 뿌듯하다.
참고
2의 보수
[서적] Do it 자바 프로그래밍 입문