2의보수 질문 있습니다
2019.11.22 비공개 조회 1,488
안녕하세요?

문제 : 4비트를 이용한 정수 자료 표현에서 2의 보수를 이용하여 음수로 표현 했을때 옳지 않은것은?
오답으로 십진수 8은 이진수 1000으로 표현된다 인데..  십진수 8은 4비트를 이용해서 보수 표현이 안되는 건가요? 01000이 되어야 하니까 오답이 된건가요?

문제2 : 같은 2의 보수 문제 인데요 2016년도 2회 모의고사 12번 문제 2의 보수를 이용한 4비트 2진수 덧셈연산 가운데 범람 오류가 발생되는 것은? 답은 3번 1100+1010 이였는데요 저는 2번 1011+0111을 골랐어요..  2번이 왜 1111이 나오는지 도무지 이해가 안가요ㅜ
댓글 /1000
답변 1개
비공개님의 답변입니다.
평민 채택 0 2019-11-22 15:46
안녕하세요.
1. 십진수 8이라고 되어 있으면, 양수이기때문에 부호와절대치, 보호와1의보수, 부호와2의보수가 큰 상관은 없습니다. 다만 위의 질문내용처럼 양수부호를 표현할 수 없으니 단순하게 보기를 답으로 했을 수 있습니다. 하지만, 문제에서 표현은 부호와 방식으로 표현한 것인지 그냥 2의 보수를 한것인지는 정확하게 보기가 어렵습니다.
2. 2의 보수를 이용한 4비트 2진수 덧셈연산 가운데 범람(오버플로우) 오류 문제는 10진수로 변환해서 풀이한다던지하여 여러가지 방법이 있습니다.
그 중에서 가장 쉬운방법으로 설명해보겠습니다.
  0 1 1 1        ----> 자리올림
    0 1 1 1 
 + 0 1 0 1   
    1 1 0 0       ----> 합
위의 예는 0111+0101 입니다. 나머지도 같은 방식으로 풀이하면 됩니다. 2진수를 위와 같이 더하면, 아래로 합이 나오고, 위와 같이 자리올림이 발생합니다. 계산이 끝나면 자리올림 맨앞의 2개(위의 내용에서는 0 1)를 XOR하여 결과가 1 이 되면 오버플로가 발생된 것으로 판단하면 됩니다.
1100+1010 은 위와 같이 계산해보면 자리올림 맨앞의 2개가 1 0 이 되어 XOR하여 결과가 1 이 되기때문에 오버플로우가 발생된 것입니다.
열공하세요. 언제나 응원하겠습니다.