책 내용 질문하기
102쪽 04회
도서
2017 시나공 정보처리기능사 실기
페이지
102
조회수
86
작성일
2017-08-19
작성자
탈퇴*원
첨부파일
DEC=128-DEC인 이유를 모르겠어요. 답지를봐도 이해가안되요.뭐가 2의 보수로 표현된 수치인지 모르고요.어디에 2의 보수가있는지도 모르겠어요 또 뭐가 7자리의 2진수에요? 그리고 왜 128에서 빼는거에요?
답변
2017-08-22 09:33:07

안녕하세요.

음수를 2의 보수로 표현한다는 조건이 있는 경우

음수인 2진수를 10진수로 변환하면 그 값은 아직 2의 보수인 2진수의 10진수 변환값이므로 이를 다시 한 번 2의 보수로 변환하는 과정이 필요합니다.

그 과정을 간단히 처리하는 방법 중 하나가 표현된 크기(여기서는 7비트, 8비트이지만 첫 번째가 부호 비트이므로 실제는 7비트)인 7비트에서 나올 수 있는 가장 큰 값인 128에서 10진수로 변환된 값을 빼주는 방법입니다.

그러므로 10진수로 변환된 DEC를 128에서 빼주는 것이죠.

물론 실제 처리되는 크기가 8비트라면 256에서 빼주면 됩니다.

예를 들어 10101010이라고 가정한다면 맨 앞이 1이므로 이 값은 음수이고 2의 보수로 표현된 상태입니다(문제의 처리조건에서 그렇게 하기로 규칙을 정했기 때문입니다.).

맨 앞의 1비트를 제외한 나머지 7비트를 10진수로 변환하면

0 1 0 1 0 1 0

= 0*2의 6승 + 1*2의 5승 + 0*2의 4승 + 1*2의 3승 + 0*2의 2승 + 1*2의 1승 + 0*2의 0승

= 0 + 32 + 0 + 8 + 0 + 2 + 0

= 42

인데 이는 2의 보수로 표현된 것이므로 128에서 빼면 128-42 = 86이 됩니다. 그런 뒤 -1을 곱하므로 -86이 됩니다.

그럼 10101010이 2의 보수로 표현된 것이라면 원래의 2진수가 얼마인지 확인해 보겠습니다.

10101010에 다시 2의 보수를 취하면 원래의 2진수가 됩니다.

10101010에 2의 보수를 취하면 01010110이 됩니다. 이는 86입니다. 맨 앞의 부호가 1이었으므로 음수로 표현하면 -86이 됩니다.

결국 두 과정의 값이 같으므려 2의 보수로 표현된 값을 원래의 값으로 변환할 때 128에서 빼주는 것과 같다는 것을 알 수 있습니다.

내용이 복잡해서 잘 이해되지 않는다면, 2의 보수로 표현된 값을 원래의 10진수로 변환할 때는 제시된 크기에서 나올 수 있는 가장 큰 값에서 빼준다는 것만 기억하세요.

오늘도 즐거운 하루 되세요.

  • *
    2017-08-22 09:33:07

    안녕하세요.

    음수를 2의 보수로 표현한다는 조건이 있는 경우

    음수인 2진수를 10진수로 변환하면 그 값은 아직 2의 보수인 2진수의 10진수 변환값이므로 이를 다시 한 번 2의 보수로 변환하는 과정이 필요합니다.

    그 과정을 간단히 처리하는 방법 중 하나가 표현된 크기(여기서는 7비트, 8비트이지만 첫 번째가 부호 비트이므로 실제는 7비트)인 7비트에서 나올 수 있는 가장 큰 값인 128에서 10진수로 변환된 값을 빼주는 방법입니다.

    그러므로 10진수로 변환된 DEC를 128에서 빼주는 것이죠.

    물론 실제 처리되는 크기가 8비트라면 256에서 빼주면 됩니다.

    예를 들어 10101010이라고 가정한다면 맨 앞이 1이므로 이 값은 음수이고 2의 보수로 표현된 상태입니다(문제의 처리조건에서 그렇게 하기로 규칙을 정했기 때문입니다.).

    맨 앞의 1비트를 제외한 나머지 7비트를 10진수로 변환하면

    0 1 0 1 0 1 0

    = 0*2의 6승 + 1*2의 5승 + 0*2의 4승 + 1*2의 3승 + 0*2의 2승 + 1*2의 1승 + 0*2의 0승

    = 0 + 32 + 0 + 8 + 0 + 2 + 0

    = 42

    인데 이는 2의 보수로 표현된 것이므로 128에서 빼면 128-42 = 86이 됩니다. 그런 뒤 -1을 곱하므로 -86이 됩니다.

    그럼 10101010이 2의 보수로 표현된 것이라면 원래의 2진수가 얼마인지 확인해 보겠습니다.

    10101010에 다시 2의 보수를 취하면 원래의 2진수가 됩니다.

    10101010에 2의 보수를 취하면 01010110이 됩니다. 이는 86입니다. 맨 앞의 부호가 1이었으므로 음수로 표현하면 -86이 됩니다.

    결국 두 과정의 값이 같으므려 2의 보수로 표현된 값을 원래의 값으로 변환할 때 128에서 빼주는 것과 같다는 것을 알 수 있습니다.

    내용이 복잡해서 잘 이해되지 않는다면, 2의 보수로 표현된 값을 원래의 10진수로 변환할 때는 제시된 크기에서 나올 수 있는 가장 큰 값에서 빼준다는 것만 기억하세요.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.