2의 보수
-
보수를 이용해 뺄셈을 할 때 자릿수가 맞지 않는 경우개발/etc 2024. 6. 28. 15:06
9 - 6을 연산을 해보자. 9의 이진수: 10016의 이진수: 01106의 2의 보수: 1001(1의 보수) + 1 -> 10101001 + 1010 = 0011은 3이므로 잘 된다. 올림이 일어난 비트는 버려지기 때문에 문제 없다. 16 - 6을 빼면 어떨까?16의 이진수: 0001 00006의 2의 보수는 1010인데 비트 수를 맞춰야 하니까 0000 1010으로 해서 더해보면 0001 1010이 되므로 26이 나와버린다. 이렇게 된 이유는 신호 확장을 올바르게 하지 못했기 때문이다. 보수를 구해서 덧셈을 했지만 우리는 뺄셈을 해야 하는 것이다. 즉 빼는 수가 음수라는 의미. 이진법에서 음수를 표현하는 방법은 최상위 비트를 1로 두는 것인데 우리의 사례처럼 비트 수를 확장해야 하는 경우에 "신호 확..